PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Seriell abgefragte Serielle Schnittstellen



JensBE
27.03.2013, 10:25
Hallo.
Ich möchte 16 Zellen (LIPO) mit Tiny26 messen Jeder Tiny mißt 4 Zellen, d.h. 4 mal Tiny26.
Diese sollen von einem ATMega16 überwacht und gesteuert werden. Der Tiny hat nur eine USI und keinen UART, ich will daher daten nur monodirektional verschicken. Damit der Mega aber auch weiß welche Daten er bekommt steuern je 4 Ports des Megas einen Eingang des Tinys an, der dementsprechend die AD - Kanäle ausliest und byteweise an den Mega schickt. Die USI soll optisch entkoppelt zum Mega sein(gemeinsame Masse verhindern). Der Mega soll die Daten auf einem 4x20 LCD anzeigen und diverse Alarme ausgeben. Desweiteren sollen die Tinys auch die Zellen balancen. Also ein BMS. Was haltet Ihr davon? Machbar? :confused:

DanielSan
27.03.2013, 10:37
Hi,

das ist bestimmt machbar. Aber warum nimmst du nicht 2 Mega48 und misst jeweils 8 Zellen. Die haben ne Hardware UART. Das dürfte einiges erleichtern. USI sagt mir jetzt nichts. Dann brauchst du auch keinen dritten Controller der das LCD steuert. Das kann dann einer der 48er machen. Der 48er ist natürlich nur eine Möglichkeit.

Wie willst du die Spannungen der Zellen auf unter 5V bringen? bei 16S liegt deine Gesamtspannung bei knapp 70V.

JensBE
27.03.2013, 10:59
Hallo Daniel San,

Die Sache warum ich 4 Controller nehmen will liegt in der Natur der Sache. Die Messungen der Spannungen werde ich über simple Spannungsteiler machen, dies produziert aber Meßfehler (Spannungsverschiebungen), daher immer nur 4 Zellen, da der Fehler dann akzeptabel bleibt. Differenzverstärker habe ich mal mit nem LM324 gemacht, komischerweise schwingt das Teil aber immer. Weiß der Geier woran das liegt.... Jeder Tiny wird von einem separaten 7805 versorgt, der immer an 4 Zellen angeschlossen ist. Gut für eine Referenzspannung. USI heißt, der Tiny kann nur halbduplex, also senden oder empfangen. Damit der Mega nicht verwirrt wird muß er wissen wann er was empfangen kann. Damit das möglich ist müssen die Tinys ebnfalls instruiert werden wann Sie welche Werte verschicken dürfen. Stichwort Timing. Mega48 sind nett, funktionieren aber mit meinem AN910 Programmer V.3.8 nicht. Außerdem habe ich noch mindestens 31 Tiny26 sowie 30 Tiny2313 hier rumliegen. Irgendwie brauchen die ne Verwendung, ansonsten wär das totes Kapital......

DanielSan
27.03.2013, 11:03
Ja da hast du recht die Messung wird dann wirklich ungenau.

Ich hab noch 30 Mega48 hier liegen. Deswegen schlag ich die immer vor! ;-)

Mit 4 Controllern ist halt nur die Software etwas aufwendiger.

Aktualisiert ---------------------

Kannst du nicht jeden Tiny einen Digital Input verpassen? Der 168er legt dann immer den Pegel von einem Tiny auf High und solange darf der Tiny was sagen. Ist der Pegel auf Low muss der Tiny leise sein. Das wäre doch relativ leicht umzusetzen. Oder hast du nicht genug Pins dafür?

JensBE
27.03.2013, 11:20
So in etwa will ich es machen:
Mega - 4 Outputs, 1 Ser in
Tiny - 4 Inputs, 1 Ser out

Mega schaltet pin x auf high, jetzt weiß tiny, daß er AD Kanal 1 abfragen und auf die serielle legen kann, sobald der Mega was empfangen hat, schaltet er den nächsten portpin auf high und das Spiel geht mit AD Kanal 2 weiter. So hatte ich mir das vorgestellt. Pins habe ich genug frei. Sollte also gehen. Bei den Tinys wird jedoch nebenbei noch gebalanced (Relais mit Lastwiderstand) und der Mega macht nebenher noch über 2 Outputs ne Unter bzw. Überspannaungsalarmmeldung.

DanielSan
27.03.2013, 14:07
Du willst jedem Tiny 4 Digital Leitungen verpassen? Ich würde jedem nur eine verpassen. Dann soll er alle 4 AD Werte senden. Das ist denke ich viel einfacher. Oder hab ichs nur falsch verstanden?

JensBE
27.03.2013, 15:10
Das Problem liegt bei halbduplex, das wird vom Timing her nicht einfach, ich verstehe was Du meinst, Ports sparen ist ja auch in Ordnung. So habe ich aber definierte Zustände um die ADs abzufragen, dies kann beim Mega sehr hilfreich sein, wenn man auch nur mal einen einzigen AD auslesen will. Wenn ich 4 Werte an den Mega schicke muß dieser die Werte, die ja als String empfangen werden wieder auseinanderklamüsern. Kostet Rechenzeit.