|
 |
 |
 |
 | 11/09 "Der ATM18-Radiocomputer" |
|
DetlevT
Mitglied
Dabei seit: 18.08.2007
Beiträge: 3.463
Wohnort: Erfurt
 |
|
Hallo Leute,
diesen Monat steuert der ATM18 ein Radio-IC (Silab Si4735) an.
Nun sind ICs für Radios nichts neues. Meistens brauchen diese jedoch eine Menge an Beilagen, um arbeiten zu können. Mit den ganz neuen ICs ist das anders. Da ist auf wenigen Quadratmillimetern schon "alles drin" und man braucht für den UKW-Empfang eigentlich nur noch ein Stück Draht als Antenne. Nachteil dieses Trends zur Miniaturisierung: Die Anschlüsse dieser ICs sind für den Bastler nicht mehr zugänglich. Deshalb gibt es von der Firma Modul-Bus ein Platinchen, dass die Anschlüsse dieses ICs als DIP verfügbar macht. 34.95€ ist der stolze Preis dafür. Das ist eine Menge Holz, aber das IC bietet auch eine Menge Optionen mit denen man spielen kann, z.B. RDS Dekodierung.
Das Projekt habe ich selbst nicht nach gebaut - und habe das auch nicht vor. Den Artikel habe ich aber interessiert gelesen, ein bisschen recherchiert und für ein paar Punkte habe ich Anmerkungen oder Verbesserungsvorschläge.
Meine erste Kritik geht an den Hersteller des ICs (Silab). Es ist nicht möglich, auf dessen Heimatseite das Datenblatt für diesen Baustein zu bekommen. Stattdessen wird man an seine "local distributor" verwiesen. Man will damit wohl gleich die Adressen potentieller Kunden sammeln. Das ist unhöflich - und auch ziemlich sinnlos, weil man das Datenblatt natürlich mit Hilfe einer Suchmaschine problemlos bekommen kann.
Des weiteren verstehe ich nicht, wie man ein IC auf den Markt bringen kann, das einerseits mit 5V betrieben werden darf, an der Schnittstelle dann aber nur 3,3V verträgt. Was soll das? Sicher, 3,3V ist inzwischen der Standardwert für neue ICs (gell, Humfrey?) und ein IC, das selbst nur mit 3,3V läuft, darf von mir aus auch die Spannung an den Eingängen auf diesen Pegel begrenzen. Es gibt aber durchaus ICs, die 3,3V Versorgungsspannung haben und deren Eingänge trotzdem 5V vertragen (z.B. ENC28J60). Aber beim Si4735 ist das ja gerade umgekehrt, was soll das?
Ich habe deshalb auch ein Problem damit, wenn Burkhard Kainka den doch recht teuren Baustein dann ohne jede Sicherung an den mit 5V betriebenen ATM18 anschließt. Wenn man nur seine, von ihm getestete Software einsetzt, mag das ja gerade noch gehen. Aber man legt sich so etwas ja zu, um selbst damit herumzuspielen. Da kann man durchaus einmal etwas falsch machen und den Si4735 zerstören.
Ziemlich fehlerträchtig ist vor allem, wie Burkhard Kainka den Reset-Impuls für den Si4735 erzeugt. Normalerweise ist hier der Pin am ATMEGA als Eingang geschaltet und liegt durch den externen Pull-Up-Widerstand auf 3,3V. Er schaltet ihn dann einfach auf Ausgang - und vertraut dabei darauf, dass Bit4 in PORTD immer noch 0 ist wie direkt nach dem Reset. Das ist aus meiner Sicht schon fast russisches Roulett. Da muss sich ja nur einer einmal vertun und diese Bit aus Versehen setzen, weil er zum Beispiel für den vierten(!) Pin (der aber PD3 heißt) den internen Pull-Up-Widerstand aktivieren wollte. Oder man meinte eigentlich PB4 und schreibt aus Versehen PORTD statt PORTB - und das war es dann. Oder jemand nutzt einen Bootloader, der dort eine "1" hinterlässt, was man nicht unbedingt wissen muss. Oder einer denkt beim Schreiben des eigenen Sourcecodes nicht darüber nach und sendet einen low-Impuls wie man es üblicherweise machen würde: PORTB.4 auf 1 setzen, auf Ausgang schalten... Peng! Oder... Oder...
Merke: Gegen Murphys Law kann man nie gewinnen, bestenfalls unentschieden spielen.
Ähnliches gilt für die I²C-Pins. Die muss man ja nur einmal falsch konfigurieren und hat ziemlich teuren Sondermüll produziert. Deshalb kann ich nur raten: Wenn man Systeme mit unterschiedlichen Spannungspegeln zusammenschaltet, muss man mit Hardware(!) dafür sorgen, dass bei Softwarefehlern, die einem in der Entwicklungsphase immer unterlaufen können, nichts kaputt geht.
Die smarten Ingenieure bei Philips haben da für die I²C-Schnittstelle eine sehr einfache Lösung gefunden, die man nur genial nennen kann (http://www.semiconductors.philips.com/ac...98/39340011.pdf Kapitel 11) Benötigt wird nur ein N-Kanal MOSFET pro Leitung (siehe Schaltbild). Bei einem High-Pegel ist Ugs ~0V, der Transistor gesperrt, jede Seite hat durch die Pull-Up Widerstände ihren eigenen High-Pegel (3,3V oder 5V).
Wird auf der 3,3V-Seite die Leitung auf low gezogen, ist Ugs ~3,3V, der Transistor schaltet durch und die 5V-Seite wird damit auch auf low gezogen. Wird stattdessen auf den 5V-Seite low angelegt, leitet erst einmal nur die interne (Body-) Diode im MOSFET(*). Dadurch wird aber wiederum Us soweit erniedrigt, dass der Kanal selbst freigeschaltet wird und auch auf der 3,3V-Seite ein sauberes low-signal anliegt. Geht das Signal durch die Pull-Ups wieder gegen high, sperrt der Transistor und jede Seite hat wieder ihren eigenen High-Pegel.
So kann man einen I²C-Bus mit 5V und einen mit 3,3V zusammenschalten und in beide Richtungen senden. Man braucht dazu einen selbstsperrenden N-Kanal MOSFET mit einem nicht zu hohen Threshold. Ein BS170, den wahrscheinlich viele ohnehin in ihrer Bastelkiste haben, müsste hier eigentlich passen(**) (Ausprobiert habe ich das Ganze aber noch nicht). Die Reset-Leitung kann man auf die gleiche art absichern (Variante A) oder man nimmt hier ganz klassisch einen Inverter zur Pegelwandlung (Variante B). Man müsste dann aber die Software anpassen, weil der ATMEGA dann einen High- statt eines Low-Impulses senden muss.
Wo ich schon einmal bei Verbesserungsvorschlägen bin: Ich würde mir auch überlegen, ob ich nicht auch für ein paar Cent einen "Uhrenquarz" spendieren sollte, wenn der Si4735 diese Option schon anbietet (siehe Datenblatt).
Den Elektor-Artikel zum Projekt gibt es für Forumsmitglieder hier im Anhang zum Download . Die Quelltexte ebenfalls. Das Heft gibt es im gut sortiertem Zeitschriftenhandel oder bei Elektor direkt.
Die Fernsehsendung #36, in der das Projekt vorgestellt wird, gibt es zum Download hier.
In diesem Thread soll alles diskutiert werden, was sich direkt auf dieses Projekt bezieht: Meinungen, Kommentare, Probleme beim Nachbau, alternative Quelltexte und weiterführende Ideen.
Für die Diskussion über andere Dinge, die mit dem ATM18 oder ganz allgemein mit den AVR-Controllern von Atmel zu tun haben, gibt es einen speziellen Bereich hier in diesem Forum.
Gruß, DetlevT
(*) Substrat und Source müssen dazu verbunden sein. Das ist häufig der Fall, genaueres verrät einem hier das Datenblatt des konkreten Transistors.
(**) Laut Datenblatt beträgt die Threshold-Spannung typischerweise 2V. Der Maximalwert beträgt 3V. Letzteres wäre eigentlich zuviel, weil der Transistor schon bei 2,7V (= 3,3V - 0.6V Diodenflussspannung) schalten müsste. Wahrscheinlich funktioniert das Ganze dann meist trotzdem, weil der Output-low-Pegel des ATMEGA bei etwa 0.3V-0.4V liegt, der Si4735 seinerseits Spannungen bis 1V als "low" interpretiert. Das ist aber ziemlich knapp. Sollte die Übertragung zum Si4735 unzuverlässig sein, könnte dies also der Grund sein. Man muss dann ein anderen BS170 ausprobieren.
|
|
22.10.2009 14:10 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
franz
Mitglied
Dabei seit: 11.06.2008
Beiträge: 621
Wohnort: Ruhrgebiet,Hohenlohe
 |
|
| Zitat: |
| Ziemlich fehlerträchtig ist vor allem, wie Burkhard Kainka den Reset-Impuls für den Si4735 erzeugt. Normalerweise ist hier der Pin am ATMEGA als Eingang geschaltet und liegt durch den externen Pull-Up-Widerstand auf 3,3V. Er schaltet ihn dann einfach auf Ausgang - und vertraut dabei darauf, dass Bit4 in PORTD immer noch 0 ist wie direkt nach dem Reset. |
die Ports funktionieren dann als Open - Kollektor (bzw.Open-Drain bei MosFet) - Ausgänge
auf jeden Fall muß man drauf achten, daß die dazugehörenden PORTx Ausgänge immer auf 0 gesetzt sein müssen.
Umgeschaltet wird dann mit dem DDRx Register
auf Ausgang = Low
auf Eingang = High (3,3 V)
|
|
22.10.2009 16:49 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
DetlevT
Mitglied
Dabei seit: 18.08.2007
Beiträge: 3.463
Wohnort: Erfurt
Themenstarter 
 |
|
Hallo franz,
genauso wird es hier gemacht (Den Quelltext kann man übrigens bei elektor.de jetzt schon kostenlos bekommen. Die Reset-Routine ist ab Zeile 103 zu finden).
Technisch handelt es sich aber bei dem Ausgang eben nicht um einen Open-Drain, sondern um einen CMOS-Ausgang, der sehr wohl in der Lage wäre, 5V mit vielen mA auszugeben, wenn man einen Fehler macht. Deshalb meine Warnung.
Gruß, DetlevT
|
|
22.10.2009 18:06 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
KCler
Mitglied
Dabei seit: 30.07.2007
Beiträge: 17
 |
|
btw: Gibt es schon bekannte Bezugswege für den Stein ? (Ausser Elektor/Modul Bus)
35 Euro ist halt schon eine Hausnummer für die Platine :-(
Ich hab heute bei Reichelt einen "Produktwunsch" geäußert...
(Homepage->Service->Produktservice->neuenArtikelAnfragen)
..vielleicht bringts was wenns viele tun :-)
Ansonsten ist das ne super Sache *thumbsUp*
Kcler
|
|
25.10.2009 20:02 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
DetlevT
Mitglied
Dabei seit: 18.08.2007
Beiträge: 3.463
Wohnort: Erfurt
Themenstarter 
 |
|
Hallo KCler,
mit dem Stein allein dürfte kaum jemand etwas anfangen können, wenn er nicht auf einer Adapterplatine montiert ist. 35€ sind ohne Frage eine Menge Geld. Der Preis dürfte aber durch die geringe Stückzahl gerechtfertigt sein. Die geringe absetzbare Stückzahl dürfte auch potentielle Konkurrenten davon abhalten, auch so etwas anzubieten. Mir ist jedenfalls keine zweite Quelle bekannt.
Wer nur einmal ein Radio mit dem AVR steuern will, kann sich ja einmal nach Sparkfun-Modulen mit dem AR1010 umsehen. Bei Watterott steht er für 8.35€ in der Liste (http://www.watterott.com/FM-Receiver-Module), allerdings leider "momentan nicht verfügbar!". Ob und wann sich das ändert, müsste man dort einmal erfragen.
Wer hingegen alle Optionen des Si4735 einmal ausprobiert, hat damit eine Menge zu tun und für so jemanden sind 35€ vielleicht auch akzeptabel.
Gruß, DetlevT
|
|
25.10.2009 22:47 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
franz
Mitglied
Dabei seit: 11.06.2008
Beiträge: 621
Wohnort: Ruhrgebiet,Hohenlohe
 |
|
Hallo,
ja, das ist so einiges drin. Dazu gibt es das Handbuch "Programming Guide" AN332 , 244 Seiten
die Grundfunktionen sind ja im Beispielprogramm zu sehen, die RDS - Informationen
auszulesen , wird wohl komplexer sein.
noch eine Idee dazu : ein Scanner- Radio, daß einen bestimmten Frequenzbereich abtastet, vielleicht noch mit grafischer Anzeige
|
|
26.10.2009 07:46 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
gpsklaus
Mitglied
Dabei seit: 27.01.2008
Beiträge: 29
Wohnort: Rhein-Main-Gebiet
 |
|
Hallo,
ich selbst bin mit der praktischen Umsetzung noch nicht soweit, aber im Zusammenspiel mit der gelieferten Software dürften die im Schaltbild ELEKTOR 11/2009 Seite 57 eingezeichneten Prozessoranschlüsse "PD6" und "PD7" vertauscht sein. Die an RCLK-Eingang des Radiochips erwarteten 32KHz werden über "PD6" angeliefert.
Vielleicht kann das Jemand bestätigen und dadurch ggf. Probleme bei der Inbetriebnahme verhindern.
Klaus
|
|
08.11.2009 16:04 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
DetlevT
Mitglied
Dabei seit: 18.08.2007
Beiträge: 3.463
Wohnort: Erfurt
Themenstarter 
 |
|
Hallo gpsklaus,
Offenbar hat sich bei der Printausgabe tatsächlich dort ein Fehler eingeschlichen. Im Bild Schaltplan.jpg (im zip-File zu finden) ist das nämlich auch anders. PD6 ist der PWM-Ausgang des ATMEGA, nicht PD7.Und im Source-Code wird auch PD7 als SDA definiert, nicht PD6
Gruß, DetlevT
|
|
08.11.2009 16:24 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
DetlevT
Mitglied
Dabei seit: 18.08.2007
Beiträge: 3.463
Wohnort: Erfurt
Themenstarter 
 |
|
Hallo gpsklaus,
in diesem Fall bietet sich tatsächlich an, das System mit 3,3V zu betreiben und den Problemen aus dem Weg zu gehen. LM317 und LiPo wird aber so nicht gehen, weil eine LiPo-Zelle nur 3-4Volt hat, je nach Ladezustand. Eine einfache Lösung fällt mir da spontan aber auch nicht ein.
Das mit dem LCD-Display würde ich mir noch einmal überlegen. Gerade wenn man mit dem doch recht teuren Si4735 rumspielt, wird man vielleicht doch irgendwann RDS etc. nutzen wollen. Ich habe gerade hier das Display DIPS082 von Electronic Assembly in der Mache. Kostet etwa 15€ und ist nur 20x40mm groß. Mit BASCOM lässt sich das problemlos ansteuern.
Bei der Taktversorgung solltest du auchh einmal darüber nachdenken, das Radio-IC mit einem (Uhren-) Quarz und den ATMEGA mit dem internen RC-Oszillator zu betreiben.
Gruß, DetlevT
|
|
09.11.2009 13:28 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
gpsklaus
Mitglied
Dabei seit: 27.01.2008
Beiträge: 29
Wohnort: Rhein-Main-Gebiet
 |
|
Hallo Detlev,
wie fast immer, so gibt es bei allen Details auch hierbei immer PRO's und CON's. Sie muss man gegeneinander abwägen und jeder hat dabei natürlich auch seine Prioritäten. Wegen der damit verbundenen Zusammenschaltungsvereinfachung würde ich halt gern mit einer 3,3V-Versorgung auskommen, wobei es durchaus Low-Voltage-Drop-Regler gibt, die es trotzdem erlauben, nur eine LiPo-Zelle zur Versorgung zu benötigen. Die Verwendung der üblichen ( 5V- ) LCD-Displays scheint allerdings nicht ohne Klimmzüge ( zusätzliche Spannungswandlung ) möglich zu sein. Alternativ könnte man aber auch eines der aus Handybeständen verfügbaren Grafikdisplays ( z.B. LS020 ) verwenden. Sie arbeiten auch im 3,3V-Betrieb, erfordern dann allerdings doch noch einen kleinen zusätzlichen Wandler für die Hintergrundspannung. Man hätte damit aber die Möglichkeit einer graphisch sehr ansprechenden ( Farb- ) Darstellung incl. auch der RDS-Daten. Für ein anderes Projekt habe ich diese Displays schon benutzt und im Netz sind auch BASCOM-Routinen zur Ansteuerung verfügbar.
Was die Taktaufbereitung betrifft, so gibt es natürlich auch hierzu viele mögliche Varianten. Vielleicht würde es auch mit dem internen Prozessortakt klappen, aber wenn ich sowieso einen Quarztakt benötige, warum sollte er dann nicht mit der höheren Frequenz arbeiten und gleich beide Chips versorgen?
Klaus
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von gpsklaus: 09.11.2009 21:23.
|
|
09.11.2009 20:57 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Peter D
Mitglied
Dabei seit: 10.05.2008
Beiträge: 269
Wohnort: Middle Franconia
 |
|
Hallo,
hat schon jemand von euch das ATM18-Radio gebaut?
Hier mein erster Test-Aufbau mit einer Steckplatine.
Es hat funktioniert - ich konnte UKW-Radio hören.
Jetzt habe ich für die kommenden Herbst-/Wintertage etwas zum experimentieren :-)
Grüße, Peter
|
|
01.09.2011 00:21 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Peter D
Mitglied
Dabei seit: 10.05.2008
Beiträge: 269
Wohnort: Middle Franconia
 |
|
Hallo franz,
danke für den Hinweis. RDS funktioniert.
Die Display-Anzeige lässt sich noch verbessern - z.B.: Umlaute, Uhrzeit.
Ich habe jetzt hier 25:10 Uhr auf dem Display.
Dank an Burkhard Kainka für das Projekt.
Grüße, Peter
|
|
02.09.2011 01:10 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Peter D
Mitglied
Dabei seit: 10.05.2008
Beiträge: 269
Wohnort: Middle Franconia
 |
|
Hier mein ATM18-Radio-Testboard auf einer Lochrasterplatine.
Nicht besonders hübsch - aber es funktioniert.
+ ATMEGA88 Controller
+ SI4735 Radiochip
+ 7805 für 5V
+ 3940 für 3,3 V
+ Programmierkonnektor ISP
+ Klinkensteckerbuchse für Audio-Out
+ EA DIPS082 Display (4Bit Daten)
+ Reset-Taster
- Weitere Taster bisher noch über Steckboard (Sendersuche)
Gruß, Peter
|
|
15.11.2011 01:06 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
|
Impressum - Datenschutzerklärung
|
|  |