Kont. Daten von PC an ATMega16/32 senden

OP #1516358
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
Angehängte Dateien:
Gast #1516373
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
OP #1516380
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!
OP #1516666
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....)?
Angehängte Dateien:
Gast #1516675
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
OP #1516684
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!
Gast #1516701
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
#1516744
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.
OP #1516889
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?!
Gast #1516894
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.
#1516953
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.
OP #1516975
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren