Mega8/16, RFM12 und DS1820

General

* Feedback
* Search this site
* Site Index
* Impressum

Internet

* HTML und andere Dinge
* T-Online Tips
* FrontPage SE Tips
* PC Sicherheit Tips
* Sicher durchs Netz?
* Meine Kabelkiste
* Power Reset Märchen

Hobby

* Genealogy
* Trainspotting
* Nixie Clock
* AVR NET-IO
* Lichtschranke
* Tablet und Tastatur
* DS1820 und RFM12

Mega8/16, RFM12 und DS1820

Eigentlich ein kleines Projekt, aber es hatte viele Tücken.

Ein Funkthermometer sollte es werden. Ich hatte zu diesem Zeitpunkt weder Erfahrung mit dem RF12, noch mit dem DS1820 Sensor.

Der Empfänger wurde mit einem vorhandenen Mega16 auf einem vorhandenen Pollin Evaluation Board 2.0 aufgebaut. Der RFM12 wurde mittels eines Flachbandkabels und einer Adapterplatine von Pollin aufgebaut.

Der Sender wurde auf einer Lochraster Laborplatine aufgebaut. Zusammen mit einem Mega8 und einem RF12 Funkmodul.

Das erste Programm aus dem Internet lief trotz Anpassung garnicht. Auf der Suche noch Hilfe war ich überrascht, wieviele Probleme es mit den Funkmodulen gibt. Schließlich entschied ich mich für eine vorhandene Programmsammlung, die ich im Bascom Forum fand. Siehe hier: Codebeispiele

Folgende Erfahrungen habe ich dabei gemacht:

  1. Die Tatsache dass ich zwei verschiedene MCUs benutzt habe, war nicht hilfreich (Ports, Fuses, etc)
  2. Die ersten sichtbaren Erfolge hatte ich erst, als ich beide MCUs auf interne 8 Mhz Clock umstellte. Vorher wurde der Mega8 vom RF12 mit 10Mhz getaktet und der Mega 16 mit einem externen 16 Mhz Quarz getaktet.
  3. Fehlende Analysemöglichkeiten. Jeweils nur eine LED zum Anzeigen. Keine eingeplante Möglichkeit (serielle Schnittstelle) auf der Senderplatine. Ebenfalls keine LCD eingeplant .

Es hat also lange gedauert, bis die ersten Zeichen am Sender abkamen und mit Hilfe des Print Befehles angezeigt werden konnten. Aber leider waren die Zeichenfolge (32 Stellen von Hex31 bis Hex50) permanent falsch. Allerdings gab es ein auffälliges Muster. Von den 32 Zeichen war immer die 16. Stelle, dann die 8. Stelle, die 4. Stelle, die 2. Stelle und schließlich die erste richtig (gesehen von msb absteigend auf lsb). Daraus schloß ich, das es sich entweder um einen Programmfehler oder um ein Hardwarefehler handeln mußte.

Durch Zufall habe ich das Flachbandkabel, dass das Evaluation Board mit der Adapterplatine verbindet, im laufenden Betrieb geknickt - und siehe da - die Zeichenkette war auf einmal richtig! Um es kurz zu machen, ich habe das Kabel drastisch gekürzt (von circa 10cm auf 3 cm).

Als nächstes habe ich das Evaluationboard durch einen neuen Empfänger ersetzt. Dieser ist auf Basis eines Atmega 8 und einer LDC Anzeige (2 x8) aufgebaut.

Hier war die größte Herausforderung das Display C0802 von Pollin. Die einschlägigen Foren sind ja voll mit Hilferufen zu diesem Thema. Um wiederum kurz zu machen: das Display wird unter Bascom mit 16 x 1a definiert. Und eine passende Steckerbuchse mit 10 Anschlüßen ist sehr hilfreich. Da es bei Pollin keine Buchse mehr gab, habe ich bei Ebay das Pollinspiel ersteigert. Die Buchse ist Bestandteil des Bausatzes.

Das nächste Problem war, dass der Empfänger (Eigenbau auf Laborplatine) partout nicht empfangen wollte. Letzlich war es ein Kontaktfehler im selbstgebauten Sockel für den RFM12.

Neuer Bascom Code für beide Module folgt in Kürze, ebenso die Schaltpläne.

Das war's!!! Allerdings sind mir folgende Zusammenhänge und Abhängigkeiten immer noch nicht klar:

MCU Clock Speed (jetzt 8 Mhz)
SPI Clock (config spi speed?) (jetzt Clockrate 16, war in den Beispielen auf 64 gesetzt)
RFM12 Clock intern (10 Mhz)
Init parameter C606: Data Rate (??)(jetzt 4.8 kb)
Init parameter C049: Low Battery Detect and µC Clock (2,5 Mhz)
Wie sollten diese Parameter sinnvoll aufeinander abgestimmt sein?

Schaltplan RFM12 Sender
Schaltplan RFM12 Empfänger
Bascom Code Empfänger
Bascom Code Sender

Stromsparen!

Der Empfänger (Mega8, rfm12, DS1820,eine normale LED und ein LM317) verbrauchen zirka 20 mA. Als erste Stromsparmaßnahme habe ich den Mega8 gegen einen Mega8L getauscht. Bei der Gelegenheit habe ich dann auch die MCU Clock von 8 auf 2 Mhz herabgesetzt. Nun war ich bei circa 10 mA! Die nächste Maßnahme war der Einsatz von Powermode = idle. Durch das weglassen der LED komme ich auf circa 5 mA. Das ist aber immer noch zuviel. Als nächstes werden folgende Maßnahmen nach und nach umgesetzt:

  • LM 317 weglassen und Batterie (von 9V Block auf AAA) auf 4 Akkus a 1,2 umstellen.
    • ohne LED sind es nun 2 mA, mit sind es circa 5 mA
  • Nach weiteren Stromsparmöglichkeiten im RFM12 und Mega suchen
  • Ungenutzte Ports am Mega 8 auf Ground oder VCC legen

Ohne Gewähr. Fehler gefunden? Andere Meinung? Feedback?

H O M E
Copyright © 1996-2013 Jonny Roggenbuck / Created 01-06-2013 / Last revision 21-07-2013