Forum: Mikrocontroller und Digitale Elektronik Kont. Daten von PC an ATMega16/32 senden


von Rene K. (draconix)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe da ein kleines Projekt in Planung und hoffe ihr könnt mir ein 
wenig weiterhelfen. Ich möchte Daten von einem PC an den Atmega senden 
(Jeweils 2 Dec Werte zwischen 0 und 8) aber in einem Intervall von ca. 
40ms. Ist dies überhaupt möglich via RS232? Oder was eignet sich dafür 
am besten?

Die Daten sollen dann im Atmega verarbeitet werden und dann jeweils die 
Anzahl der LED's eingeschaltet werden. Sprich: Wert vom PC ist 6 - Am 
Atmega sollen 6 LED's leuchten.

Hier mal der der Schaltplan... in meinem beschränkten Elektrotechnischen 
Verständniss erstellt :D Wer fehler findet, bitte melden und auch den 
Grund warum dies verkehrt ist, möchte ja auch was lernen :D

Vielen Dank für eure Hilfe und die Rücksicht um einen absoluten Newfag 
:D

von g457 (Gast)


Lesenswert?

> Ich möchte Daten von einem PC an den Atmega senden
> (Jeweils 2 Dec Werte zwischen 0 und 8) aber in einem Intervall
> von ca. 40ms. Ist dies überhaupt möglich via RS232? Oder was eignet
> sich dafür am besten?

Rechnen wir mal nach: 2 Werte 0..8, das passt in ein Byte. Nehmen wir 
an, Du nimmst RS232 bei 8n1, dann müsstest du alle 40ms ein Byte 
übertragen, oder anders ausgerückt 25 Bytes pro Sekunde. Bei 8n1 werden 
daraus 250 Bit pro Sekunde - das schafft ein normales RS232 locker.

Aaber: ob Du das Timing von 40ms gut hinbekommst, das ist eine ganz 
andere Frage. Abhängig davon, wie genau das sein muss, ist von 
'Echtzeitbetriebssystem obligat' bis 'geht auch USB-RS232-Wandler 
problemlos' alles drin.

HTH

von Rene K. (draconix)


Lesenswert?

So ganz genau kommt es nicht auf die 40ms an, wenn es ein Input-Lag von 
10-30ms gibt ist dies nicht so wild. Sie werden halt in ungefähr dieser 
Zeit vom Rechner gesendet, sollte der Atmega oder die RS232 mal ein 
Datenpaket verschlucken ist dies auch nicht so wild.

Vielen Dank für dein Rechenbeispiel!

von Ben _. (burning_silicon)


Lesenswert?

dann ist das eine sehr luschige anforderung für die rs232... bei 
115kbaud gehen da locker 10kbyte/s durch.

von Rene K. (draconix)


Lesenswert?

Dann bin ich ja beruhigt :D

Kann mir noch jemand was zu dem Schaltplan sagen? Explizit zum MAX232?!

von spess53 (Gast)


Lesenswert?

Hi

Du bist etwas knausrig mit Kondensatoren. Die Beschaltung des Quarzes 
ist total falsch. An AVCC gehört auch noch ein C nach Masse.

MfG Spess

von Rene K. (draconix)


Angehängte Dateien:

Lesenswert?

Hmm... Ist die Beschaltung des Quarzes total falsch oder nur in 
Beziehung auf die C? Hab ihn nun mal mit 22pf C's gegen GND beschaltet.

Für AVCC gegen Masse reicht der eine der sowieso den Plus gegen Masse 
steht nicht aus? Sollte ich dort ebenfalls ein 100nf nehmen?

Mal so am Rande, ist es eigentlich egal welche VDC Werte der Kondensator 
halten kann? (50, 100 VDC....)?

von spess53 (Gast)


Lesenswert?

Hi

>Hmm... Ist die Beschaltung des Quarzes total falsch oder nur in
>Beziehung auf die C? Hab ihn nun mal mit 22pf C's gegen GND beschaltet.

Sieht schon besser aus.

>Für AVCC gegen Masse reicht der eine der sowieso den Plus gegen Masse
>steht nicht aus? Sollte ich dort ebenfalls ein 100nf nehmen?

Gewöhne es dir einfach an: Jeden VCC-Anschluss beschalten und mit 
einem Kondensator abblocken.

>Mal so am Rande, ist es eigentlich egal welche VDC Werte der Kondensator
>halten kann? (50, 100 VDC....)?

Mit welcher Spannung versorgst du deinen AVR?

MfG Spess

von Rene K. (draconix)


Lesenswert?

spess53 schrieb:

> Mit welcher Spannung versorgst du deinen AVR?
>
> MfG Spess

Ja mit 5V DC halt :D Aber ich finde halt den kleinsten 22pf Kondensator 
nur mit 50V DC. Das ist halt noch ein wenig verwirrend für mich :D

Und ja, ich werde es mir angewöhnen, danke für diesen Hinweis mit den 
Abblockkondensatoren!

von spess53 (Gast)


Lesenswert?

Hi

>Ja mit 5V DC halt :D Aber ich finde halt den kleinsten 22pf Kondensator
>nur mit 50V DC. Das ist halt noch ein wenig verwirrend für mich :D

Wenn du genügend Geld hast, findest du vielleicht eine Firma, die dir 
Kondensatoren bauen, die nur 5V aushalten. Ansonsten bist du mit dem, 
was du kaufen kannst bestens bedient.

MfG Spess

von Rene K. (draconix)


Lesenswert?

Also Sprich: Es ist völlig egal welche Spannung ich nehme... Mensch ich 
brauche mal nen Buch über Kondensatoren und deren Arbeitsweisen :D

von spess53 (Gast)


Lesenswert?

Hi

>Also Sprich: Es ist völlig egal welche Spannung ich nehme...

Na ja, ein 5kV-Kondensator ist meist etwas grösser als ein 
50V-Kondensator gleicher Kapazität.

MfG Spess

von Ben _. (burning_silicon)


Lesenswert?

ich glaub TX/RX an der sub-d9 buchse bzw. am max232 sind vertauscht. TX 
ist soweit ich mich jetzt ein paar tage zurück erinnern kann der pin2.

aref bitte nicht auf Vcc legen sondern mit einem kondensator gegen GND.

der 4-Mhz quarz ist nicht sonderlich gut geeignet.
siehe baudratenquarze.
mit den 4MHz erreicht man keine baudrate genau. besser 3.6864 oder 
7.3728 MHz nehmen, damit erreicht man alles bis 115kbaud (grenze des 
MAX232).

stromversorgung Vcc des max232 fehlt im schaltplan.

bei den widerständen für die LEDs bedenken, daß 100mA pro port nicht 
überschritten werden dürfen. also am besten low-current-LEDs nehmen wenn 
nicht sichergestellt wird daß z.b. immer nur eine leuchtet oder den 
strom auf max. 12mA pro LED begrenzen.

von Rene K. (draconix)


Lesenswert?

Ben _ schrieb:
> ich glaub TX/RX an der sub-d9 buchse bzw. am max232 sind vertauscht. TX
> ist soweit ich mich jetzt ein paar tage zurück erinnern kann der pin2.

Jep, ich schau mich bei den Specs lieber nochmal durch. Hab gerade an 
diesem Rechner die Schaltung nicht da.

> der 4-Mhz quarz ist nicht sonderlich gut geeignet.
> siehe baudratenquarze.
> mit den 4MHz erreicht man keine baudrate genau. besser 3.6864 oder
> 7.3728 MHz nehmen, damit erreicht man alles bis 115kbaud (grenze des
> MAX232).

Gut gut, was ist eher zu empfehlen ein Osziquart oder reicht ein 
normaler mit 3.6864Mhz?

>
> stromversorgung Vcc des max232 fehlt im schaltplan.
>

Hmm.. hab den Anschlußplan aber so übernommen, er ist doch via Pin2 an 
5V angeschlossen, oder hat er noch einen seperaten VCC Pin?!

> bei den widerständen für die LEDs bedenken, daß 100mA pro port nicht
> überschritten werden dürfen. also am besten low-current-LEDs nehmen wenn
> nicht sichergestellt wird daß z.b. immer nur eine leuchtet oder den
> strom auf max. 12mA pro LED begrenzen.

Hmm... Jep, da werde ich wohl LC LED's nehmen müssen, leider. Diese 
haben nur 2mA, da liege ich dann weit darunter. Es kann sogar passieren 
das alle 16 LED's gleichzeitig leuchten, das ist ja das Problem gerade.

Gibt es eine vernünftige Alternative diese 200mA per uC (Wie bekommt ihr 
eigentlich das Mikron als Buchstabe hine?! :D ) zu übergehen. Ich will 
aber nun nicht unbedingt für jede LED einen einzelnen 
Leistungsverstärker verbraten? Einen seperaten LED Treiber eventuell?!

von XYZ (Gast)


Lesenswert?

> Gut gut, was ist eher zu empfehlen ein Osziquart oder reicht ein
> normaler mit 3.6864Mhz?
Klicke mal auf diesen Link: 
http://www.mikrocontroller.net/articles/Baudratenquarz

> Gibt es eine vernünftige Alternative diese 200mA per uC (Wie bekommt ihr
> eigentlich das Mikron als Buchstabe hine?! :D ) zu übergehen. Ich will
> aber nun nicht unbedingt für jede LED einen einzelnen
> Leistungsverstärker verbraten? Einen seperaten LED Treiber eventuell?!

Hmm... 2 Fragen: Das µ bekommt man so hin: "ALT GR + m"
Wenn's das IC nicht schafft, nimmt man einen (oder mehrere) Treiber, da 
gibt es mehrere Möglichkeiten.

von Ben _. (burning_silicon)


Lesenswert?

wenn du den hohen LED strom brauchst gehts nur mit einzelnen treibern, 
evtl. ICs aus der ULNxxxx reihe. glaube ULN2803 oder so, bin ich mir 
aber nicht sicher. da gibts auf jeden fall ICs wo gleich acht treiber 
drin sind.

wenn dir pro LED 12mA reichen kommst du ohne aus, mußt halt die 
widerstände entsprechend exakt wählen. 100mA pro port sind kein problem, 
200mA für den ganzen µC auch nicht.

einfach den 4mhz quarz rauswerfen und einen der beiden vorgeschlagenen 
baudratenquarze einsetzen. ich würd immer zum schnelleren tendieren, 
aber wenn dir die 3.6MHz reichen ist der auch super. mußt dann nur dein 
programm an die neue taktfrequenz anpassen, die ganze CPU läuft dann ein 
wenig langsamer (oder bei 7.2Mhz halt einiges schneller).

V+ am MAX232 ist nur einer der beiden stützkondensatoren der 
ladungspumpe. der Vcc pin fehlt ganz einfach komplett.

von Rene K. (draconix)


Lesenswert?

Ben _ schrieb:
> wenn du den hohen LED strom brauchst gehts nur mit einzelnen treibern,
> evtl. ICs aus der ULNxxxx reihe. glaube ULN2803 oder so, bin ich mir
> aber nicht sicher. da gibts auf jeden fall ICs wo gleich acht treiber
> drin sind.

Jep super, der ULN-2803A ist die Lösung des Problems. "The ULN2803A has 
a
2.7kW input resistor for 5V TTL and CMOS" Der 2,4,5 ist für höhere 
Spannungen (6-14V) vorgesehen. Er bietet wirklich direkt 8 Leitungen, 
praktisch, danke für den Tipp!

> einfach den 4mhz quarz rauswerfen und einen der beiden vorgeschlagenen
> baudratenquarze einsetzen. ich würd immer zum schnelleren tendieren,
> aber wenn dir die 3.6MHz reichen ist der auch super. mußt dann nur dein
> programm an die neue taktfrequenz anpassen, die ganze CPU läuft dann ein
> wenig langsamer (oder bei 7.2Mhz halt einiges schneller).

Ok, dann werde ich das so tun :D

> V+ am MAX232 ist nur einer der beiden stützkondensatoren der
> ladungspumpe. der Vcc pin fehlt ganz einfach komplett.

Nu gut, dürfte ja kein Problem sein. Finde den Pin schon irgendwie. 
lach

Also überarbeite ich heute mal meinen kompletten Schaltplan und werde 
euch dann gegen Abend weiterhin damit "belästigen".

Vielen Dank für die vielen Nützlichen Tipps bis dato.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.