Schema grob - Verständnisfragen

Dominik

Neues Mitglied
10. Okt. 2008
19
0
0
Zürich
Sprachen
  1. BascomAVR
Hallo zusammen.

Anmerkung zu Beginn:
Ich möchte in das Thema uC einsteigen und habe mir daraus ein Projekt gemacht, welches mich in die Elektronik als auch die uC-Programmierung führt und ich somit daraus lernen kann. Ich möchte dies NICHT nur per Taster und LEDs und Zeitrelais realisieren, sondern mittels uC-Programmierung und Elektronik/Beschaltung.


Anbei ist mein grobes Schema (Dimensionen etc. stimmen nicht! Symbole
schon! uC wird evtl. ein mehr-pinniger genommen!) für folgende Funktion (Testboard):

- über ein Kabel mit einzelnen Litzen wird das Testboard mit 24VDC und GND vom
extern zu prüfenden Schaltschrank genommen, welches für das Testboard
wie auch den uC auf 5VDC gewandelt wird

- Es sind (zB) 7 Stück 24VDC-Signale (also HIGH) welche von der am
Schaltschrank hängenden Anlage geschalten und ausgegeben werden: Diese
müssen vom uC eingelesen und an den Ausgängen entsprechend reagiert
werden - auch geschalten mit 24VDC-Signalen (HIGH) zurück in den
Schaltschrank

- Die Signale vom Testboard zum Schaltschrank werden mittels
Taster/Schalter gesetzt

- Die LEDs sind option von mir, dass visuell angezeigt wird, welche
Signale gerade geschalten oder am Laufen sind (IN wie auch OUT)


Fragen:
1) Darf ich den GND vom 24VDC- wie auch dem 5VDC teil zusammenschalten?
2) Was soll genommen werden: Relais oder Optokoppler??
3) Es ist schon richtig, dass die OUTPUTS des uC über R, Transistor das
Relais geschalten wird oder? Auch mit 5VDC-Relais - oder kann ich dann
direkt ans Relais?

Im Moment wäre es das. Ich freue mich hier etwas zu lernen.

Grüsse und bis dann.
 

Anhänge

  • Schema_grob.png
    Schema_grob.png
    46,1 KB · Aufrufe: 39
Zu 1.: Wenn Du da irgendwas sinniges ausgeben/einlesen willst, brauchst Du so denselben Gnd-Pegel... es sei denn, Du verwendest in beide Richtungen Optokoppler (was sicherer wäre da dann potentialgetrennt)
2tens sollte damit bereits angerissen sein. kommt auch auf die zu schaltende Last an und auf die Frequenz der Signale.

Zu 3tens: die einzelnen Pins des Controllers können nur 20mA liefern/schlucken, ein Port ca 100mA, der gesamte Controller 300mA (Faustregel - genauer stehts im Datenblatt unter "Electrical Characteristics"). An die Relais sollten noch Freilaufdioden (wenn die überhaupt bleiben (auf der Eingangsseite tut's vielleicht sonst auch ein Spannungsteiler)

Zum Plan: Die Transistoren müssen mMn unter die Relais (als Gnd-seitig der Spule).
Den AGnd/AVcc-Beinen gönnst Du auch noch einen Abblockkerko
Die Kippschalter könnten auch den Pin gegen Gnd schalten, intern dann die Pullups aktivieren...

Such mal im FAQ-Bereich nach Dinos Minimalbeschaltungs-Thread (daß Du 'ne externe Taktquelle brauchst, bezweifle ich mal, aber auch sonst ist das ganze für Dich sicher ganz nützlich...)

vie Spaß und viel Erfolg;)
 
Hallo LotadaC - vielen Dank für die schnelle Antwort.

Ich werde mir somit nochmals Gedanken machen und einen definitiven Entscheid fällen bzgl. OK oder Relais.

Verstehe ich das nun richtig?:
- GND kann ich so belassen (24VDC von ext. mit 5VDC von int. zusammen).

Melde mich erneut sobald ich das Schema inkl. allen Datasheets komplett durchberechnet habe (wird mir auch neu sein, mal sehen).

Danke für den Thread-Tipp: Werde ich mal durchlesen!

Grüsse und evtl. bis bald (was ich noch nicht hoffe meinerseits :cool: )
 
Moment mal!

Mit Deinen Relais hast Du natürlich die Ein- und Ausgangssignale betreffend auch 'ne Potentialtrennung - Gnd müßte also diesbezüglich nicht verbunden sein. Prinzipiell dasselbe wie bei Optokopplern.

Aber ich gehe davon aus, daß das Gnd-Potential an allen Klemmen identisch ist. Somit hast Du wegen dem Linearregler eh dasselbe Gnd-Potential.

Dann könnten die Eingänge aber auch einfach über einen Spannungsteiler (33k zu 6k8 oder so) gegen Gnd direkt auf den Controller.

Bei den Ausgängen dann entsprechend einen FET ansteuern, der das 24V-Signal ggf auf Gnd durchschalten soll.

Jetzt nochwas zu den Controllereingängen: derzeit hast Du bei angezogenen Relais 'n sauberen 5V-Pegel am Controller, aber wenn es offen ist, was soll der Controller dann erkennen?

Normalerweise legt man das Bein über einen hochohmigen Widerstand auf einen Pegel fest, das Signal kann es dann (niederohmig) gegen den Widerstand auf den anderen Pegel zwingen - damit hast Du immer einen sauberen Pegel.
Also entweder im Ruhezustand das Netz mittels Pullup auf 5V, und das Signal kann es auf Gnd ziehen, oder das Netz mittels Pulldown auf Gnd, und das Signal kann es auf 5V ziehen.

Der Controller besitzt interne Pullups (20..50k oder so), die dazu genutzt werden können, aber keine Pulldowns. Verwendet man diese ist zu bedenken, daß die erst durch den Programmcode aktiviert werden können, beim Reset also erstmal inaktiv sind.
 
Hallo, ich wieder.

Habe mich mal mit dem auseinandergesetzt und den (hoffentlich definitiv möglichen) Grobentwurf gezeichnet (Dimensionen wie Widerstandswerte etc. stimmen teils noch nicht).

Bevor ich mich ans Dimensionieren mache, möchte ich fragen, ob das so überhaupt funktioniert bzw. dies mit den richtigen Dimensionen (Werten) auch so laufen 'sollte'?

Es ist reines Einlesen von Signalen (24VDC) mit entsprechenden Ausgaben bzw. Einlesen von 'manuell' erzwungenen Signalen (5VDC, per Tasters) und Ausgabe höherer Signale (24VDC).

Grüsse
 

Anhänge

  • Pro1504.pdf
    37 KB · Aufrufe: 31
  • Pro1504.2.pdf
    21,2 KB · Aufrufe: 21
Hmm...
mal auf die Schnelle ein paar Kommentare

Zur 2ten PDF:
  • Die OKs sind ja primärseitig LEDs, sekundärseitig (FE)Ts/TRIACs/WasAuchImmer - für die LED muß also ggf der Strom begrenzt werden, am einfachsten mittels geeignetem Vorwiderstand (gilt für beide PDFs)
  • Wozu IC10? um die eingeschaltete Spannung zu signalisieren? Dann kann doch (LE)D11 mit R27 auch direkt an die 5V hinter dem Linearregler
  • Du verwendest serielle Schieberegister (Daisy Chain) - warum hängst Du die nicht an das SPI des AVR (B5, B7)? sollte dann auch das Programm vereinfachen...
  • Wozu die R-Netzwerke am AVR? Um ungenutzte Pins auf ein sauberes Potential festzulegen? Wie gesagt, jeder I/O-Pin besitzt einen internen Pullup, den Du aktivieren kannst. Damit könntest Du die Beine dann statt auf Gnd auf Vcc ziehen - ohne externe R-Netzwerke.
  • Warum überhaupt externe Schieberegister, wenn die Anzahl der verfügbaren I/Os ausreicht? Oder willst Du ggf expandieren können?
Zur 1ten PDF:
  • Prinzipiell geht das mit den Taster-Eingängen so, aber statt den externen Pulldown bei Betätigung mit 5V zu übersteuern, kannst Du ebenso den internen Pullup mit Gnd übersteuern. Vereinfacht die Schaltung.
  • Die OKs sekundär wie NPN-Transistoren schalten, also den Emitter an Gnd und am Collector das Relais bzw das Signal ableiten
  • Bei den Eingangs-OKs muß natürlich auch wenn der "offen" ist ein sauberer Pegel am AVR registriert werden, also Signal an den AVR mittels Pullup. Das kann natürlich auch der interne sein (wenn er vor dem auslesen des Pins/scharfschalten des entsprechenden IRQs/... aktiviert wird
Edit:Ich weiß ja nicht, was Du da als LEDs (über die Kleinsignaltransistoren) verwenden willst - wenn's nur irgendwelche Indikator-LEDs sein sollen, kannst Du die wahrscheinlich auch direkt über den AVR treiben - bei entsprechend begrenztem Strom
 
Hi,

Hmm...
mal auf die Schnelle ein paar Kommentare

Zur 2ten PDF: ...

Zur 1ten PDF: ...

von mir nur ein Kommentar ... ich hätte auch draufgesehen wenn die Schaltpläne als PNG hochgeladen und sichtbar gewesen wären ... Jedes Mal ne PDF runterladen (ich hab den direkten Viewer im Firefox deaktiviert) wiederstrebt mir irgendwie ... :eek:

Gruß
Dino
 
Hallo zusammen.

@dino03: Wink kam rüber :) Werde ich in Zukunft so machen, auch meine Meinung!

@LotadaC:
Die OKs sind ja primärseitig LEDs, sekundärseitig (FE)Ts/TRIACs/WasAuchImmer - für die LED muß also ggf der Strom begrenzt werden, am einfachsten mittels geeignetem Vorwiderstand (gilt für beide PDFs)
Was bedeuten dann die Informationen zu den OKs, dass die geltend für '24VDC' bzw. '5VDC' sind in den Unterlagen? Ich dachte, dass dort direkt 24VDC bzw. 5VDC geschalten werden kann.

Wozu IC10? um die eingeschaltete Spannung zu signalisieren? Dann kann doch (LE)D11 mit R27 auch direkt an die 5V hinter dem Linearregler
Ich dachte, dass die LED direkt im 5V-Kreis zu Instabilitäten führen.


Du verwendest serielle Schieberegister (Daisy Chain) - warum hängst Du die nicht an das SPI des AVR (B5, B7)? sollte dann auch das Programm vereinfachen...
Damit befasse ich mich in einem nächsten Projekt (nocht nicht geplant, aber Ideen vorhanden...). Im Moment bin ich mal froh, die einzelnen I/O-Ports richtig anzusteuern ^_^



Wozu die R-Netzwerke am AVR? Um ungenutzte Pins auf ein sauberes Potential festzulegen? Wie gesagt, jeder I/O-Pin besitzt einen internen Pullup, den Du aktivieren kannst. Damit könntest Du die Beine dann statt auf Gnd auf Vcc ziehen - ohne externe R-Netzwerke.
Naja, kann man diesen 'intern enable-ten' Pullups trauen? Ich meine nur, kann ich dies kontrollieren, dass diese auch wirklich im Innern des uC 'greifen'?
Dann werde ich dies sicher so lösen, dann kann ich diese I/Os auch nach aussen führen, um evtl. nachträglich gewünschte Signale umzusetzen.


Warum überhaupt externe Schieberegister, wenn die Anzahl der verfügbaren I/Os ausreicht? Oder willst Du ggf expandieren können?
Aufgrund des Unklaren, welche Ports ich auch als Input und welche als Output benutzen darf, habe ich mal diese genommen, welche wirklich keine andere Funktion haben bzw. gewisse Signale nicht angelegt werden dürfen.


Prinzipiell geht das mit den Taster-Eingängen so, aber statt den externen Pulldown bei Betätigung mit 5V zu übersteuern, kannst Du ebenso den internen Pullup mit Gnd übersteuern. Vereinfacht die Schaltung.
D.h. somit, dass ich die internen Pullups aktiviere (auf ständiges +5VDC setze) und diese nur mittels Taster, den Pin direkt auf Masse schalte?


Die OKs sekundär wie NPN-Transistoren schalten, also den Emitter an Gnd und am Collector das Relais bzw das Signal ableiten
Ok. Vom uC geschaltene Komponenten also immer NACH dem 'Verbraucher' setzen/schalten.


Bei den Eingangs-OKs muß natürlich auch wenn der "offen" ist ein sauberer Pegel am AVR registriert werden, also Signal an den AVR mittels Pullup. Das kann natürlich auch der interne sein (wenn er vor dem auslesen des Pins/scharfschalten des entsprechenden IRQs/... aktiviert wird
IRQs, also Interrupt-Routines - im Moment möchte ich dies noch nicht miteinbeziehen, nur Einlesen und Ausgeben. Ist es somit auch so möglich, dass ich die internen Pullups aktiviere und mit dem OK den Pin (am OK-Kollektor) auf Masse (OK-Emitter) schalte?


Edit:Ich weiß ja nicht, was Du da als LEDs (über die Kleinsignaltransistoren) verwenden willst - wenn's nur irgendwelche Indikator-LEDs sein sollen, kannst Du die wahrscheinlich auch direkt über den AVR treiben - bei entsprechend begrenztem Strom
Ja, die sollen nur den Zustand anzeigen, haben aber keine spezielle Funktion sonst. Ich werde dies berücksichtigen.


Vielen Dank für die Antworten.

Grüsse
Dominik
 
...Was bedeuten dann die Informationen zu den OKs, dass die geltend für '24VDC' bzw. '5VDC' sind in den Unterlagen? Ich dachte, dass dort direkt 24VDC bzw. 5VDC geschalten werden kann...
Was hast Du denn für konkrete Unterlagen/Optokoppler?
"Normale" haben 'ne IR-Diode drin, die aus dem Bauch heraus 'ne Vorwärtsspannung von knapp 1,5V bei knapp 50mA haben sollten.
Irgendwo hattest Du mal den CNY66 bezeichnet - da wären es laut Datenblatt 50mA bei 1,25V.
...Ich dachte, dass die LED direkt im 5V-Kreis zu Instabilitäten führen...
???
Die hängt doch bei Dir genau so an denselben 5V - lediglich der OK zwackt noch seine ca 0,7V CE-Spannung ab. Ohne OK muß der Vorwiderstand der LED halt auf 5V dimensioniert werden, mit OK auf 4,3V. Wird aber wahrscheinlich eh auf denselben Wert in der E-Reihe rauslaufen...
...Damit befasse ich mich in einem nächsten Projekt (nocht nicht geplant, aber Ideen vorhanden...). Im Moment bin ich mal froh, die einzelnen I/O-Ports richtig anzusteuern ^_^...
Hatte ich vielleicht falsch verstanden (oder Du mich...) - nochmal deutlicher: Dein Controller besitzt 'ne interne Hardware-SPI. Das ist auch ein Schieberegister, welches die Beine B7 (SCK) B6 (MISO) B5 (MOSI) und B4 (/SS) nutzt (bzw nutzen kann). Allerdings nutzt Du das Schieberegister ja nur in einer Richtung (AVR->HC595), dabei wird dann in den AVR der jeweilige Zustand von B6 eingetaktet. (anders gesagt, wenn Du Hardware-SPI zum austakten von Bytes über B5 (und B7 als Clock) nutzt, ist B6 zwangsläufing MISO, also Master Input. SPI würde also das die Datenrichtung von B6 auf Eingang festlegen (auch wenn Du das nicht nutzt), Du könntest aber trotzdem den Pullup aktivieren und/oder den tatsächlichen Zustand des Beins (Eingang) auslesen. aber zurück zum Thema: Wenn Du Deine externen 595-Schieberegister an B5 (und B7) anschließt, kannst Du natürlich wie gehabt die Bits in Software rausschubsen lassen, Du hast dann aber bereits die Möglichkeit vorbereitet, irgendwann "in einem nächsten Projekt" in SPI-Hardware schubsen zu lassen, ohne umverdrahten zu müssen.
...Naja, kann man diesen 'intern enable-ten' Pullups trauen? Ich meine nur, kann ich dies kontrollieren, dass diese auch wirklich im Innern des uC 'greifen'?
Dann werde ich dies sicher so lösen, dann kann ich diese I/Os auch nach aussen führen, um evtl. nachträglich gewünschte Signale umzusetzen...
Natürlich! (wenn Du den nicht irgendwie zerstört hast)
folgende Dinge beeinflussen die Pullups:
  • Fusebits könnten alle anderen Einstellungen übersteuern - mir ist lediglich bei kleineren Controllern RSTDISBL bekannt, welche den Pullup am Reset aktiviert
  • wird innerhalb des Programmes irgendeine Hardware enabled, die die normale I/O-Funktion übersteuert, kann das auch den Pullup betreffen - das machst Du dann aber auch mit Absicht, oder?!
  • ansonsten schaltet bei Deinem Controller eine "1" im Datenrichtungsbit den Ausgangstreiber des Beins an und gleichzeitig den Pullup ab, das PORT-Bit legt dann entweder den Pegel des Treibers, oder den Zustand des Pullups fest, ein eventuelles Pullup-Disable-Bit kann da allerdings noch ein Machtwort sprechen
Hat Dino auch im FAQ-Sammelthread was zu. Ich hatte das hier auch mal angerissen, da gings dann aber eigentlich um neuere Controller mit abweichendem Aufbau - Dein Mega gehört dort zu den "bisherigen"...
Üblicherweise liegen die internen Pullups irgendwo zwischen 20k und 50k
...Aufgrund des Unklaren, welche Ports ich auch als Input und welche als Output benutzen darf, habe ich mal diese genommen, welche wirklich keine andere Funktion haben bzw. gewisse Signale nicht angelegt werden dürfen...
Du kannst jedes Bein (abgesehen von der Spannungsversorgung, dem /Reset und den Quarz-Anschlüssen (XTAL)) als Ein- oder Ausgang verwenden, solange Du keine alternative Funktion dieses Beins aktivierst. Bei Deinem Controller kann jeder I/O irgendeine alternative Funktion übernehmen - die Frage ist, welche Du nicht benötigst... (oder ob alles über alternative Funktionen erreicht werden kann, und man gar keine konventionellen I/Os braucht). Bei anderen (insbesondere kleineren) Controllern, ggf mit mehr integrierten HW-Modulen gibt es sogar Beine, die mehrere unterschiedliche alternative Funktionen haben könnten - die sich dann gegenseitig ausschließen...
...D.h. somit, dass ich die internen Pullups aktiviere (auf ständiges +5VDC setze) und diese nur mittels Taster, den Pin direkt auf Masse schalte?
Genau. Das Bein liegt ja dann nur "schwach" auf 5V, also eben über einen mindestens 20k-Widerstand. Solange der Taster gegen Gnd offen ist, liefert das PIN-Bit des Beins 'ne "1" (Vcc, High). Wenn der Taster betätigt wird, fließen durch das Bein und den Taster I=U/R=5V/20kOhm=250µA, das Pin-Bit liefert (da "unter" dem Pullup) 'ne "0" (Gnd, Low).
...Ok. Vom uC geschaltene Komponenten also immer NACH dem 'Verbraucher' setzen/schalten...
Hmm... Wenn nur geschaltet werden soll, und der Koppler 'n NPN-Transistor als Schaltglied hat, kann dieser Transistor irgendwas "davor" auf Gnd durchschalten.
...IRQs, also Interrupt-Routines - im Moment möchte ich dies noch nicht miteinbeziehen, nur Einlesen und Ausgeben. Ist es somit auch so möglich, dass ich die internen Pullups aktiviere und mit dem OK den Pin (am OK-Kollektor) auf Masse (OK-Emitter) schalte?...
Egal ob ein eventueller Pegelwechsel (oder 'n Pegel) jetzt 'n IRQ triggern soll, oder nicht - es sind digitale Pegel. Also entweder, oder... wenn der Eingang offen ist (tristate) wirkt der als Antenne, und empfängt werweißwas, daß dann zu 1 oder 0 wird. Wenn Du das Bein mit aktiviertem Pullup auf den Kollektor eines OK legst, und diesen dann auf Gnd durchschalten läßt, ist das dasselbe, wie bei den Tastern. Ob Du den Pin nun zu Fuß ausliest, oder 'n IRQ dranbindest ist 'ne andere Sache.
Dein Controller hat nur 3 Beine, die 'n konventionellen externen IRQ triggern können - von hinten durch de Brust ins Auge kann man natürlich auch andere alternative Funktionen als externen IRQ zweckentfremden, zB den AnalogComperator, die T-Pins der Timer, vielleicht auch über die Clock-Signale von USART oder SPI - aber das macht natürlich die jeweiligen HW-Module umbrauchbar...
...Ja, die sollen nur den Zustand anzeigen, haben aber keine spezielle Funktion sonst. Ich werde dies berücksichtigen...
Faustregel für die Treiber der Beine Deines AVR ist:
  • durch jedes einzelne Bein sollten höchstens 20mA fliessen (von Vcc oder nach Gnd)
  • Alle Beine der B-Ports und D-Ports zusammen höchstens 100mA
  • Alle Beine der A-Ports, C-Ports und E-Ports zusammen höchstens 100mA
  • Alle Beine aller Ports zusammen höchstens 200mA
Wenn Du also den Strom entsprechend begrenzt...
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)