Hallo Zusammen,
ich bin völlig neu auf dem Gebiet der Mikrocontroller, deshalb sind
meine Fragen vielleicht noch eher "dumm", habe aber in den letzten Tagen
schon mal viel hier im Forum und auf anderen Seiten gelesen.
Ich würde gern min. 8 Temperaturen messen, und zwar mit dem SMT160-30
wegen der hohen Auflösung. Darüber habe ich hier auch schon einiges
gelesen. Bin aber noch recht unsicher, wie das in Verbindung mit einem
Mikrocontroller funktioniert.
Ich suche nun einen geeigneten (passenden) Mikrocontroller dazu, der
möglichst sparsam ist. Ich hatte schon einiges über den MSP430 gelesen,
der recht wenig verbraucht und für den Batteriebetrieb geeignet ist.
Kann ich eine solche PWM-Messung mit dem realisieren? Oder habt ihr
vielleicht einen geeigneteren, den ihr mir empfehlen könnt?
Habe ich das auch richtig verstanden, dass man -wenn man mehrere SMTs-
messen möchte, diese an einen Multiplexer anschließt und den dann an den
Controller? Wie viel Verzögerung habe ich dann bei der Messung der Werte
der verschiedenen Sensoren?
Was für die Auswahl des Controllers noch wichtig wäre, die Temperaturen
sollen nach der Messung auf eine SD-Karte geschrieben werden.
Wäre super, wenn ihr mit einige Tipps geben könntet, was die Auswahl und
evtl. einfachste Umsetzung wäre.
Hallo, Nina!
Was soll ich sagen? Grundsätzlich ist jeder µC dafür geeignet. Nach
Jahren der AVR-Nutzung bin ich auf ARM umgestiegen und zufrieden. Die
Schusser bieten alles, was Du brauchst und sind spottbillig. Z.B.
STM32F105R8T6 2,95€ netto bei EBV. Da ist es sinnlos, einen der vielen
kleineren µC zu nehmen.
Als Entwicklungsumgebung kannste das STM3210C nehmen (~160,-€ netto),
das ich selbst in Bearbeitung habe. Ein LCD und eine MicroSD-Buchse sind
auch drauf. Wenn es explizit eine Standard-SD-Buchse sein soll, kannste
die extern anschließen.
Verzögerungszeiten zwischen Meßwerten beim ADC liegen (je nach
µC-Taktung) im Bereich von wenigen 100ns bis einzelnen µs, sollten also
kein Problem für Temperaturmessungen darstellen.
Hoffe, geholfen zu haben.
Gruß - Wolfgang
Ein Atmega164 wäre geeignet, damit kannst Du bis zu 9 Sensoren auslesen.
Sie werden über den ADC-Multiplexer an den Capture-Eingang des Timers T1
gelegt und damit kannst Du dann das Tastverhältnis messen.
Peter
Wolfgang schrieb:> Grundsätzlich ist jeder µC dafür geeignet.
Da der SMT160-30 an 4,75 .. 7V läuft, sollte der MC schon ein 5V-Typ
sein.
Sonst braucht man extra Spannungsregler und Pegelkonverter.
Der STM32F105R8T6 ist also nicht geeignet.
Peter
Und wozu braucht ihr den ADC?
Duty Cycles würde ich mittels Timer erfassen und daraus die Temperatur
berechnen. Mit einem ATmega zum Beispiel ein Timestamp für die steigende
und die fallend Flanke und das ganze ist erledigt. Für verschiedene
Sensoren entweder mehrer Timer nutzen oder multiplexen. Nix ADC.
Ich weiß nicht, in wiefern das damit geht (soeinen µC hab ich nicht),
aber ich bin eben bei Microchip über das hier gestoplert:
http://ww1.microchip.com/downloads/en/DeviceDoc/41565a.pdf
Auf Seite 7 unten beim Timer 1 Gate steht:
Example Applications
■ Delta Sigma ADC
■ PWM Decode
■ SMPS Current Sharing
■ Pulse Frequency Measurements
■ Time Frequency Measurements
Ist PWM-Decode nicht genau das, was du suchst? Wie gesagt, habe ich noch
nicht probiert, deshalb kann ich nicht sagen, obs was ist. Sollen alle
PIC18(L)F___K22 haben, also z.B. PIC18F67K22 oder PIC18F87K22.
Kommt darauf an was man messen will.
Vielleicht wären TSIC 306 oder 506 von ZMD auch geeignet.
Man kann sie mit 3 bis 5V betreiben und die Genauigkeit und Auflösung
sind sehr gut. Man braucht nur einen Pin pro Sensor, allerding ist die
Ansteuerung etwas gewöhnungsbedürftig.
Wayne schrieb:> Und wozu braucht ihr den ADC?
Garnicht, sondern nur den ADC-Multiplexer.
Damit hat man dann 10 Eingänge für das Input-Capture:
ADC0 ... ADC7, AIN1, ICP
Peter
Nina schrieb:> Ich würde gern min. 8 Temperaturen messen, und zwar mit dem SMT160-30> wegen der hohen Auflösung. Darüber habe ich hier auch schon einiges> gelesen. Bin aber noch recht unsicher, wie das in Verbindung mit einem> Mikrocontroller funktioniert.
Der SHM gibt ein temperaturabhängiges Rechtecksignal mit einer maximalen
Frequenz von 4kHz aus. Man könnte also dieses Signal mit dem Controller
sampeln. Ich persönlich hätte wahrscheinlich einn Sensor mit anderer
Schnittstelle genommen.
> Ich suche nun einen geeigneten (passenden) Mikrocontroller dazu, der> möglichst sparsam ist. Ich hatte schon einiges über den MSP430 gelesen,> der recht wenig verbraucht und für den Batteriebetrieb geeignet ist.> Kann ich eine solche PWM-Messung mit dem realisieren? Oder habt ihr> vielleicht einen geeigneteren, den ihr mir empfehlen könnt?
Machen kann man das praktisch mit jedem gebräuchlichem Controller. Ich
hab' früher 'mal in den MSP430 reingeschnuppert, mir hat's gefallen
(aber ich beschäftige mich nicht mehr damit).
> Habe ich das auch richtig verstanden, dass man -wenn man mehrere SMTs-> messen möchte, diese an einen Multiplexer anschließt und den dann an den> Controller?
Stell Dir den MUX wie einen Schalter vor. Mit der "Adresse" am Mux
kannst Du schalten, welches Signal (welchen Sensors) an Deinen Sampler
kommt.
> Wie viel Verzögerung habe ich dann bei der Messung der Werte> der verschiedenen Sensoren?
Es gibt nur eine "Verzögerung" dadurch, daß Du pro Zeiteinheit nur einen
Sensor "auslesen" kannst. Hängt auch von der Genauigkeit ab. Je länger
Du sampelst, desto genauer wird's. Die reinen Schaltzeitverluste sind
komplett irrelevant, moderne Controller schalten schnell genug, um mit
8kHz sampeln zu können.
> Was für die Auswahl des Controllers noch wichtig wäre, die Temperaturen> sollen nach der Messung auf eine SD-Karte geschrieben werden.
Ich würd' einen mit brauchbarer SPI-Unterstützung nehmen. Und das mit
der SD-Karte erst dann anfassen, wenn Deine Temperaturmessung ordentlich
funktioniert.
Ein gutes (im Sinne von brauchbar) Eval-Board kann bei solchen Sachen
(zumal's z.ß. den 430er nur SMT-mässig gibt) Gold wert sein.
Viel Erfolg, Iwan
Vielen Dank für eure vielen und vor allem schnellen Antworten.
Hab jetzt den ATmega168 ausgewählt, da ich noch ein
myAVR-Entwicklungsboard bekommen habe und der ATmega168 mit dem ATmega 8
pingleich sind. naja, was ich im Moment damit vor habe, sollte es wohl
erstmal reichen.
Mein nächstes Problem ist die Flankenauswertung der Pulse, die der SMT
schickt. Habe auch in der letzten Zeit ganz viel gelesen (leider auch
gegensätzliches), auch hier einige Programmcodes, aber als Anfänger wird
man daraus leider nicht immer schlau. Habe mir jetzt aus den vielen
Foreneinträgen und sonstigen Dingen, die ich darüber gelesen habe,
überlegt, wie man das evtl. machen könnte. Vielleicht kann mir jemand
sagen, ob das prinzipiell so geht, wie ich mir das gedacht habe.
Vielleicht hat auch jemand einen Ansatz, wie man das einfach in
Assembler schreiben könnte.
1.PB0 als Eingang setzen (Input Capture)
2.ICP1 auf steigende Flanke setzen, damit wird der timestamp in
ICR1H/ICR1L geschrieben
3.Dies müsste ich ja dann in einer Variablen 1 sichern
4.ICP auf fallende Flanke setzen, timestamp wieder in ICR1H/ICR1L
5.In Variable 2 sichern
6.ICP1 auf steigende Flanke setzen
7. In Variable 3 sichern
8. Pulsweite und Periode berechnen etc.
eigentlich müsste ich ja nun Variable 3= Variable 1 setzen, denn die
zweite steigende Flanke ist ja automatisch die erste der nächsten
Messung, oder nicht?!
Um die Genauigkeit zu erhöhen muss ich ja z.B. über mehrere ms messen
oder sowas, werden dann die einzelnen Pulsweiten addiert und daraus der
Mittelwert gebildet oder wie kann ich diesen Vorgang realisieren. Das
ist mir irgendwie auch noch nicht ganz klar geworden.
Ich hoffe meine erdachte Vorgehensweise ist nicht komplett konfus, und
ihr könnt mir weiterhelfen!
Danke im Voraus und Grüße
Jaja, der Artikel ist 1 Jahr alt.
Aber weil keine ordentliche Lösung vorgeschlagen wurde, will ich das
heute nachholen.
Eine sehr gute Applikation zur "capture" Auswertung des SMT160
Temperatursensors incl. Software für einen PIC uC findet sich hier:
http://www.technik.dhbw-ravensburg.de/~lau/wetterstation.html
(nein, nicht meine Seite).
Gruss
Erich schrieb:> Aber weil keine ordentliche Lösung vorgeschlagen wurde
Wurde es doch.
Ich kann Dir versichern, das Input-Capture des AVR ist eine ordentliche
Lösung und sie funktioniert hervorragend.
Ich benutze es selber auf einem ATtiny24.
Peter