Liebe Gemeinde,
heute möchte ich euch eine Melodieklingel vorstellen, die in BASCOM
programmiert wurde. Ja, es ist BASIC. Nicht abwinken - der Befehl
"SOUND" wurde nicht verwendet. Vielmehr wurde der Timer1 im CTC-Modus
verwendet und erzeugt, einmal angestoßen, ein Rechtecksignal
selbständig, dass den Ton ergibt.
Timer0 wurde verwendet, um die Länge des Tones zu begrenzen. Weiterhin
habe ich noch den externen INT0 verwendet, um einen Klingeltaster
anzuschließen.
Die Idee für diese Klingel ist sehr alt. Sie ist in der Zeitschrift
Funkamateur im Heft 4 1986 veröffentlicht worden. Wer danach im Internet
sucht, wird diesen Artikel auch finden. Die Melodien wurden aus dieser
Zeitschrift übernommen.
Für den Bau der Klingel wurde ein ATmega8 verwendet. Dieser ist
natürlich für diese Anwendung etwas überdimensioniert. Wenn jemand
versucht, dieses Programm in einem anderen Controller zu verwenden,
sollte er berücksichtigen, dass der Timer1 im ATmega8 als 16-Bit-Timer
aufgebaut ist. Er wird hier auch in diesem Modus verwendet. Eine
Anpassung an einen 8-Bit-Timer ist zwar möglich, erfordert aber einige
Programmänderungen.
Zur Hardware gibt es nicht viel zu sagen. Der Ausgang für den
Lautsprecher befindet sich an PIN 15 (OCA1). Für Testzwecke kann dort
ein Lautsprecher mit einem Widerstand von 220 Ohm in Reihe direkt
angeschlossen und gegen Masse geschaltet werden. Wer es lauter braucht,
der sollte noch einen Verstärker nachschalten. Der Klingeltaster wird an
PIN 4 (INT0) gegen Masse angeschlossen. Wo die Versorgungsspannung von 5
V hin kommt, müsste jedem Elektroniker klar sein.
Aufbau der Töne in der Liedtabelle:
1
Bit
2
7 6 5 4 3 2 1 0
3
4
Tonhöhe (Bit 3:0)
5
0 - Pause (kein Ton)
6
1 - c' 261,63 Hz
7
2 - cis' 277,18 Hz
8
3 - d' 293,66 Hz
9
4 - dis' 311,11 Hz
10
5 - e' 329,63 Hz
11
6 - f' 349,22 Hz
12
7 - fis' 369,99 Hz
13
8 - g' 392,00 Hz
14
9 - gis' 415,33 Hz
15
A - a' 440,00 Hz
16
B - b' 466,15 Hz
17
C - h' 493,89 Hz
18
D - c" 523,22 Hz
19
E - cis" 554,40 Hz
20
F - d" 587,37 Hz
21
22
Tonlänge in Achtelnoten (Bit 6:4)
23
0 - 1/8
24
1 - ¼
25
2 - 3/8
26
3 - ½
27
4 - 5/8
28
5 - 3/4
29
6 - 7/8
30
7 - 1
31
32
Stoppbit (Bit 7)
33
Wird an jedem Liedende gesetzt.
Das Programm:
1
' Melodieklingel - Guido Scheidat
2
' Nachbau der Melodieklingel aus FA 4/86 mit modernen Bauteilen
Guten Morgen,
ich habe gestern auf die Schnelle den bascom code für den atMega48
übersetzt. Ging problemlos.
Weitere Melodien habe ich hier gefunden:
http://sbarth.dyndns.org/seiten/rahmen.php?nav=klingel#v3
Und auch einen Link wieder zurück :
Beitrag "Melodieklingel mit PIC"
Im Anhang von Artikel
- Beitrag "Re: Melodieklingel mit PIC (AVR)"
stehen noch weitere Lieder.
Diese habe ich den aktuellen Code 'transplantiert', der atMega48 reicht
immer noch und das Programm muss noch getestet werden !
Ausblick:
Spannend fände ich eine Portierung auf den atTiny85, der hat leider
keinen 16-Bit Timer.
Vielen Dank Mirko,
der atMega48 läuft.
Habe ihn auf ein Steckbrett gesteckt.
Im Anhang für alle Mitleser der BASCOM Code und das Intel-Hex-File.
Ich verwende KEIEN 8MHz Quarz, sondern den internen 8MHz RC Oszillator !
Die Fusebits stehen in Melodieklingel-48.bas !
.
Hallo, habe das Ganze mal für einen ATTiny2313 übersetzt, zusätzlich
wurde eine Umschaltung auf Weihnachtslieder eingebaut (damit ist das
Ganze jetzt zu der alten Funkamateur-Variante mit 2 EPROM's kompatible).
Und weil ein Freund es forderte :-) ist auch noch ein Power-Save-Modus
eingebaut. Der Microproz zieht also nur noch einige µA.
Also bei mir spielt der Atiny2313 ganz langsam und dumpf etwas ab. Aber
eben keine Melodie :-(
Er läuft aber intern auf 8Mhz, was kann da falsch sein?
Wie sind die Fusebit-Einstellungen?
Der ATTiny läuft wie der Original-ATMega mit dem internen RC-Oszllator
mit 8MHz (also Vorteiler abschalten).
Die Fuses: eFuse FFh
hFuse DFh
lFuse E4h.
Bitte beachten: der ATmega spielt beim Einschalten das erste Lied, der
ATTiny
legt sich nach dem Einschalten sofort Schlafen und wird erst durch
Drücken des Klingeltasters geweckt.
Bobby
Hi,
hab das Ganze getestet, funzt ganz gut, hab statt dem Piezo einen
kleinen Schalttransistor bzw. ULN2803 mit Lautsprecher angehängt. Aus
mir zunächst nicht ganz erklärlichen Fällen passierte es dann in ca. 50%
der Fälle, dass nach Abspielen der Melodie der Schalttransistor
durchgeschaltet wurde und sich sowohl Lautsprecher als auch
Schalttransistor stark erwärmt haben (naja bei 8 Ohm Lautsprecher an 5
Volt irgendwie logisch).
Hab dann "weiter geforscht" und folgendes gefunden:
Was mich an dem ganzen Programm stört, ist die ständige Umschaltung des
Ports zwischen Input und Output. Damit hat man - wenn eine
nachgeschaltete Treiberstufe (ULN2803 oder Transistor) verwendet wird -
ein Problem . Man müßte dann zusätzlich Pull-Down Widerstände gegen
Masse schalten, da ja der Eingang des Atmega hochohmig ist und die
Endstufe verwirrt:
Also folgender Verbesserungsvorschlag für die ISR_int0 Routine, der
Portb.1 bleibt einfach als Ausgang definiert und es wird nur die
Timersteuerung für den Portb.1 ein- bzw. ausgeschaltet:
statt
Config Portb.1 = Input 'SOUNDOFF
besser:
reset Tccr1a.com1a0
und statt
Config Portb.1 = output 'SOUNDON
besser:
set Tccr1a.com1a0
Dann bleibt der Pin B.1 ganz fix auf GND-Niveau, wenn nichts ausgegeben
wird. Endstufe und Lautsprecher bleiben dann ganz cool
Hallo Manfred, hallo alle!
Ja, dieses Problem besteht. Es zieht sich durch, seit der
Veröffentlichung in der Zeitschrift Funkamateur.
Da das Programm in seiner Quelle offen ist, kann ich niemanden daran
hindern, Änderungen vorzunehmen.
Warum das Problem bei mir nicht auftritt, ist die Tatsache, dass ich
einen richtigen Verstärker angeschlossen habe. Da hier mindestens ein
Kondensator in Reihe zum Signal geschaltet ist, können keine statischen
Zustände am Lautsprecher ankommen.
Gruß
Guido
Danke Guido,
schön, dass du meine Erfahrung bestätigt hast. Mit meinem Vorschlag ist
das Problem ja behoben, ich finde es auch verständlicher, nicht die
Richtung des Ports zu ändern (Ausgang auf Eingang mit der Problematik
des hochohmigen Eingangs), sondern einfach den Timerausgang vom Port zu
nehmen und damit wieder die defaultmäßige Ausgangsstellung (=0) aufleben
zu lassen.
Falls jemand einen RTTTL-Klingeltonspieler will, denn habe ich hier
veröffentlicht - Beitrag "Re: RTTTL-Klingeltoninterpreter für Atmega8 in BASCOM II" für
den sind viel einfacher Songs zu finden, da es diese Klingeltonplayer
noch zu Hauf im Internet gibt und auch Converter, die aktuelle Songs
einstimmig von MP3 auf RTTTL konvertieren können.
Hallo Freunde der FA 4/86 Melodietürklingel,
ich habe das Programm etwas umgeschrieben, sodas es nun möglich ist über
einen Schiebeschalter drei Melodieblöcke anzuwählen und die
Statuszustände per LED zur Anzeige gebracht einen Lautstärke Regler nach
aussen geführt.
Es gibt dazu ein Target3001V16 Projekt mit zwei abgesetzten Platinen die
im Gehäuse über Flachkabel miteinander verbunden sind. Gehäuse gibt's
bei Reichelt Elektronik und alle Bauteile auch.
Bei Bedarf könnte ich per e-mail eine *.tif Datei zusenden oder eine
*.zip wenn Bestückungs- und Stromlaufplan gewünscht wird.
mail: dieter.aschmann@web.de
Hallo Dieter,
warum veröffentlichst du deine Erkenntnisse nicht gleich auf dieser
Seite?
Ein Image der Leiterplatte wäre auch nicht schlecht, da nicht jeder -
wie ich - target benutzt.
Gruß
Guido
Guido schrieb:
>warum veröffentlichst du deine Erkenntnisse nicht gleich auf dieser>Seite?
Vielleicht will er sich das hier oft übliche saublöde Genöle ersparen.
gez. Buna-Pelzer
Hallo Freunde,
ich werde schnellstmöglich eine *.zip Datei anhängen mit dem geaenderten
Bascom File und *.hex- File sowie das Target Projekt, als auch eine
*.tif und/oder eine *.pdf vom Platinenlayout und Bestückungsplan senden.
Platine ist ingesamt etwas kleiner wie eine Europakarte und trennbar,
sowie einseitig mit einigen Brücken. Vieleicht füge ich noch ein
Gerberfile dazu damit bei genuegend Interessenten industrielle
Platinenherstellung moeglich ist.
Dieter Aschmann
Hallo Fangemeeinde,
wie versprochen, sind alle Informationen in der angehängten *.zip Datei.
Auch das Baskom- Projekt mit neuer Version nochmals kompiliert.
Die Fusebits müssen im AVR- Studio oder in/ueber Bascom gesetzt werden.
Viel Spaß beim Nachbauen, ein etwas besserer Lautsprecher in einer
kleinen gedämmten Regalbox macht den Sound angenehm.
Dieter Aschmann
Hallo Tommy,
schön zu wissen das es Interesse gefunden hat und das es doch schon
viele Downloads gegeben hat.
Dieses Projekt ist allerdings Netzgebunden (230VAC) und es gibt doch
bedingt durch Verstärker IC TDA2030 ordentlich Lautstärke ab begrenzt
durchs Netzteil. Ich habe in eine kleine Regalbox aus Sperrholz ca.
20x10x7cm in Verbindung mit einem 10€ Breitbandlautsprecher den alten
"DingDong 12VAC Gong" ersetzt.
Da Eingänge für einen potentialfreien Klingeltaster als auch ein 12VAC
Eingang vorhanden ist passt die Melodieklingel fast an alle Altanlagen.
den Masse- Jumper muss man dann allerding richtig stecken.
Wechselstrombetrieb offen.
Mit freundlichen Grüssen
Dieter Aschmann
PS. Den original Türgong aus FA 4/86 habe ich auch gebaut. war damals
keine leichte Sache, scheiterte meistens am EPROM- Brenner. Die Bauteile
waren meist als Bastelversion erhältlich. Der liegt noch in der
Bastelkiste, wenn die Elko's nicht eingetrocknet sind würde die Klingel
heute noch läuten, allerdings der Sound...
Dieter Aschmann schrieb:> Dieses Projekt ist allerdings Netzgebunden (230VAC)
Das Projekt soll als Spielzeug für meinen Sohn dienen.Der mit seinen 5
Jahren extreme Interesse an der Elektronik mitbringt.Daher aber auch und
wie du meinem Bild entnehmen kannst,wird das Gerät nur mit Batterie
betrieben.Und aus gesundheitlichen Gründen meiner seits,hat das Gerät
nur einen Piezosummer und keinen Lautsprecher.Denn das weiss ich jetzt
schon dass da ziemlich oft auf den Taster gedrückt wird. :)
Aufgebaut und getestet hab ichs schon und die Platine ist bereits
fertig.Jetzt gehts ans löten.
:)
habe nach etlicher zeit deine schaltung auf einer nach deiner vorlage
gefertigten platine aufgebaut. nachdem ich aus versehen einen zu
schwachen trafo aufgelötet hatte, verwendete ich den in der stückliste
angegebenen. habe jetzt gerade wieder mit der schaltung probiert... aber
sie sagt keinen "ton" - nichtmal eine led blinzelt beim start. an was
könnte das wohl liegen?
bin ratlos!?!