Forum: Mikrocontroller und Digitale Elektronik multiplexing mal anders


von Roland P. (pram)


Lesenswert?

Guten Abend und ein frohes Fest


ich möchte gerne mehrere Current-Sense Ausgänge von Smart-Switches 
überwachen und hätte mir dabei folgende Schaltung überlegt:


              v
              |
Strom 0..3mA  8      8x -+
              |         -+
              |          |
              +---|>|----+------+--> ADC
              |                 |
          ||--'                |1|
SEL ->----||<-.                |k|
          ||--|                 |
              |                 |
             ===               ===

Die Schaltung möchte ich 8x aufbauen, die gerade nicht zu messenden 
Stromquellen möchte ich mit einen FET (Rds-on = 5 Ohm) kurzschließen. 
Der Strom der zu messenden Stromquelle fließt dann über die Diode und 
fällt an dem Widerstand ab.

Müsste doch vom Prinzip her so funktionieren, oder?

Den Mux im AVR kann ich nicht verwenden, da ich nicht genug ADC-Kanäle 
hab.

Gruß
Roland

von Gast (Gast)


Lesenswert?

Ich würde eher einen Atmega mit entsprechender Anzahl ADC-Eingänge 
verwenden. Braucht auch gleich weniger Platz auf der Platine.

Das Problem was ich sehe, zumindest wenn ich deinen Aufbau richtig 
interpretiere, ist einfach die Tatsache dass du die anderen Stromquellen 
mit kurzschließt...

Vielleicht solltest du auch vorher klären, ob die Stromquellen damit 
klarkommen.

von Dieter W. (dds5)


Lesenswert?

Du solltest aber beachten, dass die Spannung am Drain des jeweiligen FET 
sich beim Schalten zwischen fast Null und ca. 3,5V ändert.
Die Stromquelle muss sich dann jedesmal neu einstellen und schwingt 
dabei möglicherweise über.

Falls es nicht stört, lässt sich auch jeder Leitung ein 1k spendieren 
und die Signalauswahl kann mit einem 1 zu 8 Analog-MUX 4051 erfolgen.

von Roland P. (pram)


Lesenswert?

Also einen Atmel mit mehr ADC-Pins kann ich nicht nehmen, ich hab 
bereits einen ATMEGA32, der hat 8 Analogeingänge, von denen ich ein paar 
für andere Zwecke benötige (ich hab noch max. 4 frei)

Beim Kurzschließen einer STROMquelle sehe ich kein Problem, es fließt ja 
deshalb auch nicht mehr Strom.

Das mit den überschwingern klingt logisch. Wie problematisch ist es 
eigentlich, wenn die Messspannung nahe an den Rails vom 4051 gehen.
ich hab nur +5V (notfalls ungesiebte +12V) zur Verfügung. Kommt der 4051 
damit klar wenn da exakt 0V anliegen.

Auf die Schnelle habe ich diesen Beitrag gefunden, welcher von weiteren 
Problemen berichtet:
Beitrag "4051 und AVR Atmega8"

Gruß
Roland

von Weingut P. (weinbauer)


Lesenswert?

4067 oder 4097 wär noch ne option

von Sinusgeek (Gast)


Lesenswert?

Oder einen Tiny24 zum Messen einsetzen und seriell (SPI, 1wire, TWI) mit 
dem Mega32 kommunizieren lassen? Das braucht auch nicht mehr Platz auf 
der Platine und ist zuverlässig.

~

von Roland P. (pram)


Lesenswert?

Die Lösung mit dem Tiny24 hört sich im Moment SEHR interessant an, aber 
ich werd aus dem DBL nicht schlau...

http://www.farnell.com/datasheets/102858.pdf

Wie programmiere ich den Chip? Ich muss gestehen ich hab bis jetzt nur 
mit ATMEGA's <= 32 gearbeitet.

Lt. Datenblatt ist das ISP-Interface an Port B angeschlossen, allerdings 
sind die SPI-Pins an Port A (an welchem auch die Analogports sind)

Wenn die ISP-Pins mit den Analogports geshared werden, befürchte ich, 
dass ich das Teil im eingebauten Zustand nicht programmieren kann... 
(ist aber ein MUSS!)

Evtl kann man den Chip auch über debugWire programmieren. (hab ebenfalls 
noch nie was damit gemacht)
Als Programmiergerät hätte ich ein JTAGICE-mkII zur Verfügung

EDIT: Kann ich eigentlich 2 unterschiedliche Chips brennen,wenn diese am 
gleichen SPI hängen?

Gruß
Roland

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Wie programmiere ich den Chip?

ISP

>Lt. Datenblatt ist das ISP-Interface an Port B angeschlossen, allerdings
>sind die SPI-Pins an Port A (an welchem auch die Analogports sind)

ISP ist an PortA

>Wenn die ISP-Pins mit den Analogports geshared werden, befürchte ich,
>dass ich das Teil im eingebauten Zustand nicht programmieren kann...

Du mußt die Programmierpins auf der Platine direkt mit den ISP-Pins am 
Controller verbinden. Andere Peripherie muß mit mindestens 2.2kOhm 
Serienwiderstand abgetrennt werden. RESET darf nicht weggefused sein. 
Dann kannst Du auch über ISP proggen.

>Evtl kann man den Chip auch über debugWire programmieren.

Kann man. Muß man aber einen DW-Programmer haben. ISP ist universeller.

>Kann ich eigentlich 2 unterschiedliche Chips brennen,wenn diese am
>gleichen SPI hängen?

Ja. Wenn Du dem jeweils nicht zu proggenden Chip die SCK abklemmst

von sinusgeek (Gast)


Lesenswert?

Der Tiny24 hat 8 ADC-Eingänge an PortA.
Es bleiben noch 3 weitere I/O-Pins frei, einer davon ist Int0. Mit Int0 
und einem weiteren Portpin lässt sich wunderbar ein SPI-Slave 
(Schieberegister) realisieren. Der letzte freie Pin kann dann als 
Enable-Eingang dienen, falls noch mehr Peripherie am SPI hängt.

Das Programm im Tiny24 müsste Folgendes tun:

- reihum die 8 ADCs einlesen und in RAM-Zellen (Array) ablegen, evtl. 
mit Glättung (Mittelwertbildung)

- wenn Enable aktiv wird, dann Clock-Interrupt freigeben (dabei Int-Flag 
löschen um ungewollte Auslösung zu unterdrücken), Zeiger auf Beginn des 
Arrays setzen und erstes Byte in Shift-Register kopieren

- wenn Clock-Interrupt, dann per State-machine nächstes Bit aus 
Shift-Register an Data-Out legen, bei Byte-Ende nächstes Byte aus Array 
holen

- wenn Enable inaktiv wird, dann Clock-Interrupt sperren

Wenn Du den Tiny24 in der Schaltung programmieren willst/musst, (wofür 
ich eigentlich keinen Anlass sehe, der kann fertig programmiert 
eingebaut werden), dann musst Du halt einen eigenen ISP-Anschluss 
vorsehen und dafür sorgen, dass die ISP-Leitungen nicht von der 
Peripherie gestört werden.

Der Mega32 (oder größer) muss dann, um an die Daten zu kommen, bei 
Bedarf (also in regelmäßigen Abständen) Enable aktivieren und als 
SPI-Master 8 (16) Bytes einlesen und diese in ein Array legen, wo sie 
dann vom Hauptprogramm in aller Ruhe ausgewertet werden können. Nach dem 
Transfer ist Enable wieder zu deaktivieren, SPI steht dann für andere 
Kommunikation mit Peripherie zur Verfügung, falls Bedarf besteht.

~

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.