Ich habe mir einen funktionierenden DCC Decoder auf Basis des Tiny 15 gebastelt. Das ganze ist jedoch eingeschlafen, da ich das Layout für die Platine in SMD nicht so richtig klein gekriegt habe. Auf dem Prüfstand mit den Tiny 15 in DIL lief das ganze problemlos. Ich hoffe mein Code hilft für eure Projekte. Den Code für einen Encoder für Langsamfahrstellen oder Signalhalte werde ich auch noch einstellen. mfg DXM
DCC: National Model Railroad Association's Digital Command Control Standards and Recommended Practices. DCC is simply the best form of model railroad control available.
Hallo DXM Wie siehts bei der Hardware aus, ich habe vor da noch Lichtfunktion und weiteres einzubauen... Die F-Ausgänge ist klar, bei mehr mA Transistoren, aber wie siehts bei der Ansteuerung des Motors aus, könnte ich diesen gleichsetzen mit z.B. den Schaltplan von dem Lokdecoder LD-G5 von Tams? (mir geht es dabei um die Hardware) Gruß Patrick
Hier der einfache Schaltplan für Eagle 4.11. Der L272D kann 1000 mA, das leicht locker für Spur N. Für H0 oder größer müsste man nachrechnen. mfg dxm
Super, danke! Also 1000mA reichen auch für H0-Loks, H0-Lokdecoder haben meist auch nicht mehr mA. Bei älteren Loks vieleicht problematisch Gruß Patrick
Nochmal ich, welchen Wert haben die Widerstände R1 - R6 (R5 & R6 klar) Und welche Z-Diode ist eingebaut? und was soll da zwischen 4 und 6 sitzen (beim Elko) Danke im Vorraus Gruß Patrick
> welchen Wert haben die Widerstände R1 - R6 (R5 & R6 klar) R1 berechnet sich aus dem gewünschten Strom über die Z-Diode, der Z-Spannung (üblicherweise 5V als AVR-Betriebsspannung) und der Höhe der Digitalspannung. R2 sollte so bemessen sein, dass sie Eingangs-Schutzdioden des AVRs nicht überlastet werden. Es liegt schließlich die Digitalspannung an. R2 wird also recht hochohmig sein. R3 und R4 bilden einen Spannungsteiler zum Erzeugen der halben AVR-Spannung als Schaltschwelle für den L272. Da sie die Betriebsspannung des AVRs belasten, sollten sie recht hochohmig sein. Grenzen setzt der Eingangswiderstand des (Power-)OPVs. R5 und R6 ist ja klar, richtet sich nach Spannung zwischen AVR-Ausgang und Transistorbasis und dem Basisstrom für 5 bis 10-fache Übersteuerung des Transistors für sauberen Schaltbetrieb. Und natürlich nach der Belastbarkeit des Ausgangs des AVRs. Da der Basisstrom die AVR-Betriebsspannung belastet, muss er (als wechselnde Last) bei der Berechnung von R1 und der Z-Diode berücksichtigt werden. Mit etwas Grundwissen solltest du alle Widerstände berechnen bzw. schätzen können. Wenn nicht, dann solltest du dir vor dem Weitermachen dieses Grundwissen aneignen. Mit P=U*I und U=R*I, sowie etwas Englisch zum Lesen der Datenblätter solltest du vorerst zurechtkommen. > Und welche Z-Diode ist eingebaut? Da die Z-Diode zum Erzeugen der Betriebsspannung des AVRs dient, sollte ihr Wert der zulässigen Betriebsspannung entsprechen. Wenn ich mich recht erinnere, waren das 5V. Eine 5V1 dürfte also brauchbar sein. > und was soll da zwischen 4 und 6 sitzen (beim Elko) Das sind Pin 4 und 6 des Power-OPVs (L272), also dessen Stromversorgungspins. Denn ohne Stromversorgung kann der nunmal schlecht den Motor treiben. Diese Fragen hättest du dir auch selbst beantworten können, wenn du die Schaltung analysiert hättest und dabei die Datenblätter der ICs herangezogen hättest. Übrigens würde ich jedem IC noch einen 100nF-Keramik-Chipkondensator spendieren, möglichst dicht an den Power-Pins. ...
Hallo Hannes! Danke für deine Antwort, also mit der Z-Diode, das hatte ich mir mit 5V1 gedacht, da die Versorgungsspannung des tinys ja meistens 5V beträgt, aber es hätte ja auch 3V sein (bei tiny15L). Die Beschaltung mit den beiden Pins 4 und 6 hatte ich mir allerdings noch nicht angeschaut, da ist das Nachfragen einfacher, die Elektronik ist mir gut vertraut, mir ist z.B. klar das der Widerstand zum "DCC-Eingang" sehr hochohmig sein muss, der Controller verkraftet da nicht unbedingt eine so hohe spannung. Jedoch wenn ich die exakten Daten haben kann ist es doch umso besser :-) Gruß Patrick
>Hier der einfache Schaltplan für Eagle 4.11.
Interessantes Projekt, könntest Du uns bitte den Schaltplan als jpg
oder als pdf zur Verfügung stellen, denn leider hat nicht jeder
Eagle 4.11.
Danke
Bernhard
>denn leider hat nicht jeder Eagle 4.11. aber jeder kann es sich kostenlos und ganz legal bei http://www.cadsoft.de/ in der jeweils aktuellsten Version herunterladen und damit sogar Platinenlayouts und Schaltpläne bearbeiten! Für die, die jedoch weder Windoof noch Linux als Betriebssystem verfügbar haben, habe ich den Schaltpan von maddax als JPEG beigefügt. Gruss, Klaus
@KLAUS Danke für die jpg-Datei und für den Link zum Download von eagle Gruß Bernhard
Hallo zusammen Mit Interesse habe ich diese Beiträge gelesen. Ich selber suche schon länger Code für einen DCC-Decoder (Weichen, Signale) auf Basis von Bascom-AVR. Hat hier jemand Erfahrung? Freundliche Grüsse Thomas Riesen
BASCOM-Sourcen für etwas so Timing-Kritisches ? Also wirklich alles, was ich bislang für DCC gesehen habe (auf Hardwareseite) war mit Microcontrollern (früher PIC, in letzter Zeit häufiger AVR) realisiert und in Maschinensprache geschrieben. Mit Ausnahme einer DCC-Zentrale, die sich der Pins der seriellen Schnittstelle bedient; die war soweit ich mich richtig erinnere in Visual-C geschrieben. Schau die mal die Seite http://www.avr-asm-tutorial.net/ an. Assembler ist wirklich nicht so kompliziert wie man anfangs denkt. Und der Source von maddax ist wirklich gut kommentiert. Wenn Du Dir zusätzliche die Docs der NMRA reinziehst (siehe http://www.dcc.info/standards_rps/index.html) ist es kein Hexenwerk. Vorteil für Dich: Du hast mit den Sourcen von maddax einen funktionierenden Code mit dem Du anfangen kannst; die gesamte Entwicklungsumgebung ist kostenlos (AVRstudio) und das "Programmiergerät" für die AVRs kannst Du mit Bauteilen aus der Grabbelkiste zusammenlöten und die AVRs anschließend mit PonyProg (wieder kostenlos) programmieren. So, ich hoffe ich habe genug Begeisterung rüberbringen können. Viel Erfolg!!! Und lass uns an Deinen Ergebnissen teilhaben. Gruss, Klaus
@Klaus: Völlig richtig... <provokation> Aber BASCOM vermittelt den Eindruck, dass man das auch realisieren kann, ohne sich mit der Materie vertraut machen zu müssen. Denn BASIC ist ja "kinderleicht", das macht man doch mit links und vierzig Fieber... </provokation> Ich programmiere in ASM, das ist einfacher und übersichtlicher als BASCOM. ...
It is possible to make a 'DCC decoder' with basic (look at the qoutes). I was looking for a basicsource for quite a time. Until I decided NOT to use the real NMRA protocol, but to focus on the function itself: trying to have a train (h0 in my case)controlled by on onboard micro. I now use the ATTINY13 (onboard PWM, onboard osc) and try to time the micro as good as it gets. In my case, between 14 and 18 cycles (depending on OSC) means a startBIT After receving the startBIT, between 6 and 9 cycles means a '1', and between 10 and 14 means '0'. All other values mean error and start over. Even in the real NMRA protocol it is advisable to tranmit the same info for about 5 times in a row. The same with my protocol. Try to experiment.....
Hi pic16x84 I´m not quite understanding what you are trying to say. On one hand you write that a DCC-Decoder (conformant to NMRA) is possible with BASIC (which I personally doubt) on the other hand you write that you "focus on the function itself", what ever that means and "your protocol", which sounds to me as being NOT DCC (according to NMRA specs). However perhaps I just didn´t get the point you tried to make. Would you please clarify? Kind regards, Klaus
NMRA is a protocol to "Digitally Command Control" a train. So the function is NOT the NMRA protocol but (Digitally) Control a Train. The NMRA protocol has strict 'rules' about timing, bits and bytes. It is very difficult if not impossible to control a train with the NMRA protocol in BASIC! What is the problem if you don't focus on the strict timing of the NMRA protocol.Use your own protocol ! Think of items like asking for attention from a train. In my case I transmit a '1' for lets say 10 milliseconds. After that I transmit an address package. In this package a '1' is only ' 5' milliseconds instead of 10. a '0' is about 2 milliseconds. My decoder detects the upflank, waits till the downflank and sees if its 10, 5 or 2 milliseconds. When it has nothing to do (the PWM does its job independantly) it waits untill a new 10 milliseconds startpulse. After the startpulse it reads 16 bits. 8 for the adress and 8 for the function (speed and lights). It decodes the 2-bytes, refreshes the PWM (if the address byte equals the trainnumber) and...waits for the 10 millisecond startbit. Yes, if I miss a pulse, the train ERRORS.. So what, I transmit the same info about 5 times in a row. So I can transmit less packages than the NMRA protocol. So what, I don't have 256 trains to control at once.... Think what you want (function: control a train) and think HOW you want to do it (protocol). If you persist using the NMRA protocol...think of ASM and NOT BASIC. Hope this helps.
Hallo, Wenns jetzt darum geht mehr Ausgänge zu haben muss man ja auf einen anderen Atmel umspringen, ich dachte da an den ATtiny2313, da beide aus der Tiny-Reihe sind hoffe ich das das anpassen nicht allzu schwer ist, kann mir einer von euch sagen, wenn er sich den Code mal so durchschaut ob es da Stellen gibt die bei dem tiny2313 eine andere Bezeichung haben bzw. angepasst werden muss? Und wie siehts um den internen Takt aus? Danke Patrick
Hallo Patrick, ohne mir den Code jetzt im Detail angeschaut zu haben fallen mir da folgende Punkte ein: Sprungvektoren: Tiny 15 hat 9 Vektoren der Tiny2313 hat 19 !!! Hier solltest DU in jedem Fall DummyVektoren eintragen. Ja, wer sauber programmiert brauch die nicht, aber sicher ist sicher, tut ja keinem weh. Watchdog: hat der tiny15 nicht Takt: Hier musst Du sicherlich Hand anlegen. Ist aber kein Hexenwerk. Ansonsten fallen mir auf Anhieb keine weiteren Punkte ein. Daß die beiden Tinys nicht Pin-kompatibel sind muss ich wohl nicht erwähnen :-) Viel Erfolg und veröffentlich doch die geänderten Sourcen ruhig hier im Forum sodaß wir alle was davon haben. Dank im voraus. Gruß Klaus
Danke, naja ob der Tiny15 Watchdog hat oder nicht ist ja egal ;-) Brauch ich ja dann ebenfalls nicht wenn ich auf tiny2313 wechsle... Mit den Vektoren muss ich mir mal anschauen. gruß Patrick
Hallo Patrik, möchte meine Eigenentwicklung im Fahrbereich auch auf DCC umstellen.Da meine Selbstbaudecoder mit dem AT90S2313 aufgebaut sind und mit dem eingebauten UART arbeiten, wäre Hardwaremässig ein Umbau möglich. Mein Hauptproblem ist der Takt, da der At90s2313 mit 8 Mhz getaktet wird und ich maddax seinen Code nicht so hinbekomme das er mit 8 Mhz die Empfangszeiten einhält. Da ich mit RVK Basic arbeite und mich mit Assembler nicht auskenne hätte es mich interessiert ob dein Vorhaben gelang. Mit freundlichen Grüssen Georg
Hallo, hat auch jemand einen Schaltplan für einen DCC-Decoder mit Lastregelung? Gruß Mario
Ich habe mich bis jetzt noch nicht drum gekümmert, zu viele andere Sachen sind noch zu tun, aber in absehbarer Zeit will ich mich da dann auch mal ran setzen und probieren, im Keller liegt auch noch ein neuer Brenner der noch fertig gelötet werden muss... Gruß Patrick
@Klaus "Sprungvektoren: Tiny 15 hat 9 Vektoren der Tiny2313 hat 19 !!! Hier solltest DU in jedem Fall DummyVektoren eintragen. Ja, wer sauber programmiert brauch die nicht, aber sicher ist sicher, tut ja keinem weh." Ganz im Gegenteil ! Wenn man dort RETIs einträgt, verschleiert man Programmierfehler nur und sucht dann tagelang an der falschen Stelle. Auch ein Sprung zu 0x0000 verwirrt mehr, als das er hilft. Wenn man schon an nicht benutzten Interrupts was einträgt, dann einen Sprung zu einer Routine, die den Fehler deutlich signalisiert, z.B. eine LED blinken läßt. Alles andere ist witzlos. Peter
Oh, da oben sollte eigendlich nur einmal meine Antwort stehen, warum da 3mal das gleich steht, fragt nicht mich, ist nicht beabsichtigt, bitte 2 löschen... Gruß Patrick
> ist nicht beabsichtigt... Schuldhaft verursachte Verkehrsunfälle sind auch nicht beabsichtigt. > bitte 2 löschen... Wer sollte das tun?? Die derzeit zwei aktiven Moderatoren haben genug Anderes und Wichtigeres zu tun. Du wirst wohl damit leben müssen, dass jeder Leser sieht, dass du gleich dreimal geantwortet hast... ;-) ...
Ihr habt ja allo so tolle Ideen. Hat aber nun einer von euch einen lauffähigen Code für den AVR2313 (Bascom oder Assembler)? Zur Zeit möchte ich wirklich nur einfach Schaltbefehle decodieren..
Funktioniert dieser DCC Decoder Code wirklich. Funktionen F1 F2 gehen, aber die PWM spinnt. Habt Ihr auch die Erfahrung gemacht.
Welchen Code hast du denn nun implementiert? Einen Bascom-Code? Wenn ja, welchen, und wie würde ich da rankommen?
> Einen Bascom-Code?
Solch zeitkritische Dinge (DCC-Decoder) lassen sich eigentlich nur
vernünftig mit Interrupt-Programmierung realisieren. Da BASCOM wohl bei
jedem Interrupt alle Register sichert und wiederherstellt, wird das
einfach zu langsam. Mit BASCOM wirst du also keinen vernünftig
arbeitenden DCC-Decoder realisieren können, es sei denn, der
BASCOM-Hersteller löst das in ASM und bietet das als weiteren Baustein
(Bibliothek) für den "Baukasten" BASCOM an.
Ich würde ja versuchen, ein ASM-Programm dafür zu schreiben, aber mir
fehlt das Equipment. Ich habe seit Jahrzehnten keine Modellbahn mehr
und daher auch keine DCC-Zentrale. Und ich glaube kaum, dass du mir
eine DCC-Zentrale sponsern willt, damit ich Programme für einige
verschiedene Decoder schreiben kann/soll. - Oder?
...
Hallo zusammen, welche Probleme macht denn der PWM. Wenn die Schaltfunktionen funktionieren kann nicht mehr viel sein. Beim Test mit dem DDW-Server ist mir aufgefallen daß er bei Full-Speed auf einmal Zero sendet. Ist wohl ein Überlauf im DDW-Server selber. Da ich aber selber keinen C-Compiler zum Korrigieren habe, habe ich mich darum nicht gekümmert. Stelle doch mal die Belegung deiner EEProm-Variablen ein. Vieleicht ist nur ein Parameter oder die Oszillatorkalibrierung krumm. mfg dxm
Hallo Die EEPROM - Variablen sind ok. Die PWM "schwingt". Das hört sich blöd an, ist aber so. Ich habe mit dem Oszi nachgemessen. Sie geht erst auf den eingestellten Wert (mit den eingestellten Verzögerungszeiten)und dann "rapide" wieder auf WERT NULL. Danach geht das ganze wieder von Vorne los.
Also ich finde nichts. Der PWM wird nur durch den Interupt gesteuert: TIM1_OVF: ;Beschleunigungs/Verzögerungszähler ;bei Timer 1 = 1,6 MHz wird der ;Interupt wid demnach alle 6250 Hz ausgelöst ;die kürzeste Rampen-Zeit ist 0,12 Sec für den Sprung von 0 auf 252 bei IncVAL = 0 ;die längste Rampen-Zeit ist 31,3 sec für den Sprung von 0 auf 252 bei IncVAL = 255 ldi TEMPI, 3 ; Verzögerungsfaktor inc IncCNT1 ; erhöhe Zähler cp IncCNT1, TEMPI brne OVF1 clr IncCNT1 ; lösche Beschleunigungszähler inc IncCNT cp ISTSpeed, SOLLSpeed; vergleiche IST <> SOLL breq Gleich ; wenn Wert nicht gleich brsh DECSpeed ; wenn Wert größer gleich brlo INCSpeed ; wenn Wert kleiner Gleich: clr IncCNT ; lösche Beschleunigungszähler clr IncCNT1 ; lösche Beschleunigungszähler reti ; Rücksprung und Interupts wieder einschalten INCSpeed: cp IncCNT, IncVAL ; vergleiche Beschleunigungszähler brne OVF1 ; Springe wenn kleiner clr IncCNT ; lösche Beschleunigungszähler clr IncCNT1 ; lösche Beschleunigungszähler inc ISTSpeed ; erhöhe Speed rjmp PWMOut ; weiter DECSpeed: cp IncCNT, DECVAL ; vergleiche Beschleunigungszähler brne OVF1 ; Springe wenn kleiner clr IncCNT ; lösche Beschleunigungszähler clr IncCNT1 ; lösche Beschleunigungszähler dec ISTSpeed ; verringere Speed PWMOut: tst ISTSpeed ; ist Speed 0 brne OUT ; dann 0 ansonsten Out ldi TEMPI,0b01000101 ; Timer/Counter1 PWM vom out TCCR1,TEMPI ; Ausgang trennen cbi PortB, PB0 ; alles auf Null reti ; Rücksprung und Interupts wieder einschalten OUT: sbrs DCCReg, DIR ; wenn Fahrtrichtung vorwärts rjmp REV ; überspringe setzen Ausgang rückwärts cbi PORTB, PB0 ; setze Ausgang für vorwärts out OCR1A, ISTSpeed ; Wert für Speed nach Timer 1 Compare ldi TEMPI,0b01100101 ; Timer/Counter1 PWM out TCCR1,TEMPI ; Ausgang direkt reti ; Rücksprung und Interupts wieder einschalten REV: sbi PORTB, PB0 ; setze Ausgang für rückwärts out OCR1A, ISTSpeed ; Wert für Speed nach Timer 1 Compare ldi TEMPI,0b01110101 ; Timer/Counter1 PWM out TCCR1,TEMPI ; Ausgang indirekt OVF1: reti ; Rücksprung und Interupts wieder einschalten Vieleicht ist der Stützkondensator C2 zu klein gewählt und der Tiny15 geht in Reset. Dann ist für 20ms im Programmiermodus tote Hose an den Ausgängen. Danach läuft er wieder im DCC Modus hoch. mfg dxm
Warum sicherst du eigentlich in tim1_ovf das SREG nicht? In den anderen ISRs machst du es doch. Bei der umfangreichen Mainloop ist das auch unbedingt erforderlich. Ob da noch weitere Fehller sind, weiß ich nicht, so tief bin ich jetzt auf die Schnelle nicht vorgedrungen. ...
Hallo, habe die Schaltung aufgebaut und mit AVR-Studio 4.12 Build 460 uebersetzt. Getestet mit Roco Lokmaus 2 und Booster, CV-Programmierung ok., Adresse laesst sich aendern. F1 und F2 ok, Motor ruckt auch beim Programmieren. Fahren --- ohne Funktion --- (Die 5V macht ein Regler 78L05, Stuetzkondensatoren genug vorhanden.) mfg franz eff
Hallo Leute, ich habe gestern noch mal den Prüfstand hervorgekramt und einen Fehler im Mehrzugbetrieb gefunden. Tauscht doch mal die paar Zeilen aus: SpeedCalc:;Speed Berechnung 14 und 28 Fahrstufen mov TEMP2, ByteB ; Daten sichern tst ISTSpeed ; schreibe Richtung nur brne Speed28 ; wenn Speed 0 Das Register für die Fahrstufen wird sonst falsch gesichert. Wenns funzt bitte melden, vielleicht mach ich dann doch noch mit mehr Funktionen und anderen Controllern weiter. mfg dxm
Auf jeden Fall wäre Interesse an mehr Ausgängen (F0, Licht, F3, F4...) sowie an anderen Atmels (ATtiny2313...) meinerseits da. Das umbauen des Codes auf den 2313er, was ich ja machen wollte, habe ich bis jetzt noch nicht in Angriff genommen, mir fehlt die Zeit momentan... Gruß Patrick
Hallo Leute, hier habich noch mal eine Version die ganz gut aussieht. Das SREG wird jetzt auch gesichert. Der Betrieb mit kurzer oder langer Adresse läuft jetzt über CV29. Die Hersteller CVs 7 und 8 sind schreibgeschützt. Dafür habe ich jetzt keinen Platz mehr für Consistbetrieb, braucht bei den neuen Steuergeräten eh keiner mehr. Die Fahrtrichtungsumkehr ist nun nur mehr bei komplettem Stillstand möglich. Feedback von Euch würde mich freuen. Weiß jemand einen Weg einen Tiny15 zu programmieren ohne ihn einzulöten ? mfg dxm
Hallo, habe heute die neue Version kompiliert. Es gibt immer noch den Error weil "Out" in Zeile 262 kein Label sein darf. Das war wieder schnell geaendert. Die Default-Adresse im eep setze ich uebrigens nach NMRA immer auf 3. Nach dem Flashen habe ich den Tiny schnell fliegend in meine vorbereitete Lok eingesetzt. Anbei mal ein Bild: BTTB BR81 Baujahr 1979. Alle Teile fliegend am Rahmen, der Tiny sitzt spaeter dann mal vorne auf dem Motor. Lok aufs Gleis, Lokmaus eingestoepselt und Lok ruckte kurz. Die an angeschlosse LED reagierte bei F-Tasten nicht. Durch Rechtsdrehen am Regler fing die LED plötzlich an heller zu werden. Beim Linksdrehen ging sie dann langsam wieder aus und beim Ueberschreiten von Null leuchtete sie ploetzlich hell. Motor ohne Funktion. Dann habe ich an der Lokmaus 14 Fahrstufen eingestellt. Jetzt fuhr die Lok plötzlich los, liess sich aber nicht regeln. Dafuer funktioniert jetzt Funktion tadellos, ich kann Licht ein und ausschalten. Zum Schluss habe ich versucht die Lokadresse zu programmieren, es ging nicht, uebrigens das ging mit der Vorgaengerversion noch. Habe den alten EEPROM-Inhalt noch gesichert. Bei Conrad im Business-Bereich gibt es uebrigens Adapter wo die SO-IC eingespannt werden, leider nicht ganz billig...
Mal ne ganz doofe Frage: DCC und das Motorola/Märklin Protokoll sind nicht zufällig kompatibel? Hat jemenad einen Signal/Weichendekoder auf Atmel Basis für das Motorola /Märklin Protokoll, um ein bischen Code zu spicken, möchte nicht gerne das Rad neu erfinden. Danke Remo
Sind nicht kompatibel. Märklin Infos (zumindest brauchbare Links) findest du vermutlich bei Herrn König (mal suchen). ...
Ich habe den Code ebenfalls kompiliert, das Out zu Outx geschrieben damit es geht und da gerade Zeit da war mal den Code an den tiny2313 angepasst jedoch fehlt mir jetzt noch das anpassen der Zeiten (87µs usw...) da mein tiny2313 mit 4Mhz laufen möchte... Die Testschaltung ist schon aufgebaut. Gruß Patrick
Unter http://www.opendcc.de haben ich einen Zubehördecoder für DCC inkl. Source veröffentlicht. ATtiny2313, geschrieben in C (mit dem gcc (winavr)). Gruß Wolfgang
Moin Moin, So ich habe nun auch mal, neben den Anpassen auf den tiny2313 (welchen ich warscheinlich doch nicht nehme), den Code auf einen tiny15 gebrannt und meine Roco-Lokmaus raus geholt und aufgebaut, nach ein ganz klein wenig Zeitanpassung beim Timer laufen auf jeden Fall schon mal die Funktionstasten F1 & 2 problemlos. Den OP habe ich noch nicht angeschlossen, da alles in DIL aufgebaut ist und ich keine Lust hatte den OP in SMD da dran zu löten... Anbei ein Bild, da sieht man noch die Testschaltung mit dem eigendlich eingesetzen tiny2313, um den tiny15 zu testen habe ich mal schnell einen Sockel im Sockel im Sockel gebaut ;-). Die Tage werde ich mal die Ansteuerung des Motors anschauen... Gruß Patrick
In maddaxs DCC Encoder steckten noch ein paar Fehler drin (u.a. Timer0 nur einmal initialisiert, Timing falsch). Ich habe mir die Freiheit genommen diese zu korrigieren. Getestet wurde der Code mit Hilfe eines Oszilloskops und einem DCC Protokoll-Dekoder und scheint soweit zu funktionieren. Have fun, manu
Manu, Ich bin neugierig geworden. Hast du vielleicht einen schaltplan für die encoder? Frysk
...also einen Schaltplan gibt es dazu eigentlich nicht, bzw. steht alles in der ASM-Datei drin. An Pin5 (PB0) kommt ein geeigneter Booster hin. Diese lassen sich einfach selber bauen (Halbbrücke/Vollbrücke) - Anleitungen/Anregungen findet man z.B. bei www.opendcc.de (links unter Booster) oder in den Anleitungen von Tams Elektronik. manu Tiny15 Anschlussbelegung: ;RESET PB5 = 1 8 = VCC ; PB4 = 2 7 = PB2 ; PB3 = 3 6 = PB1 ; GND = 4 5 = PB0 DCC Ausgang
Manu, Danke, es ist Mir klar. Ich habe zu hause einen Lenz Booster. Kan ich den encoder auch direkt ansliesen an diesen Booster? Frysk
ist hier ja ein klasse Forum. Als typischer Nachbauer von DCC Decoder auf Atmelbasis verfolge ich mit interresse diese Thread hier. Bin seit längerem auf der Suche nach einem reinem Funktionsdecoder so mit 8-12 Ausgängen, die man über F1-F12 Ein- und Auschalten kann und bei dem man die Ausgänge beliebig dimmen kann. Wenn dann noch eine Blinkfunktion intergriert wäre, wäre es natürlich megaklasse. Hat jemand sich mal an so etwas rangemacht? Gruß aus Hamburg Thorsten
Hello DXM, i was surprised by your simple, attiny15 based DCC loco decoder. Yesterday i tried to program tiny15 by PonyProg and make wiring with L2722 and my old BTTB loco. The first test was unsuccessfull - reset pin of ATTINY on your scheme is "in the air", also PWM outputs to power amplifier doesn't work with pull-ups turned off in your source. After changing this line ldi TEMP1,0b01000011 ;Interupt auf Rise-Flanke, Pull-Up Disabble to ldi TEMP1,0b00000011 ;Interupt auf Rise-Flanke, Pull-Up Enable was all OK, but PWM frequency for motor in my old BTTB loco was too high. Please, which lines i must change to reduce PWM frequency to ~100Hz ? Please, can yuo also tell me, in which state (working, development, not working, working with problems...) is source code on Beitrag "DCC Decoder" ? Have you newer one for testing? Thank you for your answer and perfect work on decoder best regards Zdenek
Hello Zdenek, try this for your decoder for run parameter: ldi TEMP1,0b01001011 ; 0 0 0 0 Timer/Counter1 is stopped. out TCCR1,TEMP 1 ; 0 0 0 1 CK*16 (=PCK) ; 0 0 1 0 CK*8 (=PCK/2) ; 0 0 1 1 CK*4 (=PCK/4) ; 0 1 0 0 CK*2 (=PCK/8) ; 0 1 0 1 CK für PWM mit 6125 Hz ; 0 1 1 0 CK/2 ; 0 1 1 1 CK/4 ; 1 0 0 0 CK/8 ; 1 0 0 1 CK/16 ; 1 0 1 0 CK/32 ; 1 0 1 1 CK/64 für PWM mit 97,6 Hz ; 1 1 0 0 CK/128 ; 1 1 0 1 CK/256 ; 1 1 1 0 CK/512 ; 1 1 1 1 CK/1024 Caution at TIM1_OVF: delete!! in TEMPS,SREG ; SREG sichern ldi TEMPI, 3 ; Verzögerungsfaktor inc IncCNT1 ; erhöhe Zähler cp IncCNT1, TEMPI brne OVF1 clr IncCNT1 ; lösche Beschleunigungszähler inc IncCNT because the ramp for speed inc and dec will get to slow. good luck dxm
Hallo, ich habe mit der Schaltung folgendes Problem. In Richtung 'rückwärts' funktioniert der angeschlossene Motor ganz wunderbar, in Richtung 'vorwärts' nicht, bzw. nur bei Vollgas. Die PWM-Signale aus dem Tiny and den OV sehen für beide Richtungen gleich aus. Bei 'vorwärts' 'fehlen' am Ausgang des OV jedoch 2 von 3 Pulsen. ungefähr so +--+ +--+ +--+ +--+ I I__I I__I I__I I rückwärts OK +--+ +--+ I I______________I I vorwärts, nix passiert Hat jemand eine Idee, woran das liegen kann ? Danke
Hello YJN, if you use higher PWM frequency for older motor driven by L272, typically PWM>200 Hz, you can get this results: in one direction goes motor OK, but in the reverse direction has motor very low torque. This i have tested with many other DIY decoders. You can solve this problem by decreasing PWM freq about to 100 Hz. Zdenek P.S.: Thanks to DXM for updated code, i'll try it today
Hello Zdenek, many thanks for your reply, reducing the PWM frequency get's it all to work ! Could you or anybody else in this forum please explain the 'electr(on)ically' background for this behaviour to me ? I have searched the whole internet to find informations about this, but i could not find anything explaining this ... thx yjn
Moin, @Maddax Wie hast du den OSCCAL-Wert raus gekriegt, durch messen oder versuchen? Hast du zufällig auch einen (Cirka)Wert für 4Mhz? Gruß Patrick
Hallo, wer lesen kann hats leichter, siehe Datenblatt. OSCCAL steht beim Tiny 15 im Auslieferungszustand auf Adresse 0 im EEprom. Einfach auslesen ;) mfg dxm
>> Hast du zufällig auch einen (Cirka)Wert für 4Mhz? > OSCCAL steht beim Tiny 15 im Auslieferungszustand auf Adresse 0 im > EEprom. Muss ich das jetzt verstehen? Der Tiny15 wird doch auf 1,6 MHz calibriert und nicht auf 4 MHz. Desweiteren hat jedes Exemplar der calibrierbaren AVRs seine eigenen Calibrationsbytes (unverlierbar) im Signature-Space gespeichert. Die muss man halt mittels ISP-Programm auslesen und ins AVR-Programm übertragen. Ich nutze dazu immer das L-Byte der letzten Flash-Zelle, da schreibt ATMEL nämlich auch das Calibrationsbyte hin. Im Übrigen empfehle ich mal die Appnotes, da ist eine dabei, die sich mit der Calibration des internen RC-Oszillators befasst. ...
Hallo, ersteinmal allen ein gesundes und erfolgreiches 2007! im anhang mal meine version von maddax T15 code. er ist auf meine ansprüche verkürzt und erweitert. der t15 hat nunmal nur 1k progspeicher. weggelassen habe ich lange add., consist, 128 fahrstufen, genaue Vmax begrenzung und F3 Rangiergang. dazugekommen sind Vmax begrenzung in 12,5% schritten von 50% bis 100% das reicht in der praxis vollkommen aus, fahrtrichtungsabhängige beleuchtung pwm gedimmt, motor pwmfreq. veränderbar, merken der letzten geschwindigkeit im eeprom (damit riskiert man auf dauer die zellen, hilft aber ungemein bei schlechtem schienenkontakt). die platine ist einseitig 16x40 mm, kann man gut nachbauen, wem sie zu groß ist der kann sie in der mitte durchbrechen und umklappen. ist einfacher als zweiseitig mit dukos. gruß willi
Hallo, nach sowas habe ich schon lange gesucht. Vor allem, weil der Decoder so klein aufzubauen ist. Mit dem DCC-Format kenne ich mich nicht wirklich aus, daher: kann jemand evtl. die Software für einen Funktionsdecoder umstricken? Ein paar reine Schaltausgänge würden genügen... Danke & Gruße, Sebastian
Hallo Sebastian, schau Dir mal das asm vom meinem T15 DCC Dek an, da ist alles für einen Funktionsdecoder schon bei, ist beim T15 nur rauskommentiert. Es sind halt keine Ports mehr frei, ich benutze das Grundgerüst aber auch für einen s1200 bzw s2313 mit 8mhz Keramikschwinnger oder jetzt auch mit einem T2313 und dann reicht das auch für die Funktionsausgänge. Ich hänge Dir mal mein File für einen s2313 an. Das habe ich für einen Triebwagen geschrieben, bei F1 wird vorm anfahren ein klingeldreiton abgespielt und für diese zeit auch ein pin für klingelleuchte gesetzt, F2 F3 F4 schalten einfach nur portpins. Ansonsten ist der Funktionsumfang genauso wie beim T15 dek. Viele Grüße Willi
Hallo Willi, danke für die Antwort - ich hatte den Code in der Tat nur grob überflogen schäm Ich werde das mal ausprobieren - außerdem möchte ich´s noch auf den Tiny13 portieren. Soweit ich gesehen habe, ist der fehlende zweite Timer der einzige größere Unterschied. Ohne Motor-PWM sollte man aber gut ohne auskommen. Nochmals Danke & Grüße, Sebastian
Hallo Sebastian, das sollte kein Problem sein, Du mußt es nur auf die 4,8 bzw 9,6MHz beim T13 anpassen, der T15 läuft nur mit 1,6 MHz. Ich habe auch eine Version für einen s1200, der hat auch nur einen Timer, da mache ich die Motor-PWM genauso wie die für Licht. Das ist halt nicht so genau, macht sich aber in der Praxis überhaupt nicht bemerbar. Meine Files von oben haben übrigens noch einen Fehler. Ich habe vergessen das Reverse bit beim Lichtsetzen mit zu beachten( Motorrichtung wir gedreht, Lichtausgänge bleibenaber in der alten Richtung), muß ich noch änderen. Gruß Willi
Hallo Willi, ich habe den Code jetzt auf AVR-GCC und den Tiny13 portiert. Als Takt habe ich 9,6MHz mit Divisor 8 genommen, also 1,2 MHz. Die Konstanten habe ich entsprechend angepaßt - funktioniert einwandfrei. Den Programmiermodus konnte ich noch nicht testen - habe nur eine Roco Lokmaus 1 zum Test (die IntelliBox braucht mein Vater selbst ;-)), aber ich sehe da keine Probleme (lediglich beim ACK, aber das ist wohl nicht unbedingt nötig, hab´s erstmal auskommentiert). Für eine Licht-PWM könnte man evtl. auf 4,8 MHz umsteigen, dann sollte die Genauigkeit etwas größer sein. Aber für Licht ist es allemal ausreichend. Die Platine ist 17x31mm "groß", für die Ausgangstreiber habe ich Transistorstufen vorgesehen. 500mA (BC817) sollten für Funktionsausgänge reichen (mein Vater will seine Wagen damit beleuchten, die vorgesehene LED-Beleuchtung braucht 20mA) Schaltplan ist der weiter oben gepostete, allerdings habe ich der Z-Dioden-Regulierung einen Transistor verpaßt, dann wird der Widerstand nicht so belastet - 0,5W sind für SMD ein bißchen fett. Noch ein Tipp für Deinen Code: das Einlesen der Bytes könnte man wohl etwas eleganter per Subroutine lösen - 6x derselbe Codeblock ist nicht so effizient. Außerdem solltest Du bei den Portpins und Timing-Werten mit Konstanten arbeiten, das erleichtert ggfls. das Portieren auf andere Controller (Konstanten in .h-Datei ändern und fertig). Bei der Hardware halte ich einen 7805 für Overkill, nimmt viel Platz und so gut geregelt braucht man´s nicht. Hat jemand der Beteiligten etwas dagegen, wenn ich den modifizierten Schaltplan/Code auf meiner Webseite (www.voitzsch.net) veröffentliche? Selbstredend ohne kommerziellen Hintergrund und mit Quellenangabe - alles was dort liegt, ist GPL.
Hallo Sebastian, -Licht PWM ist absolut unkritisch, ich habe mir der software schon mal eine LED bei 1% zum Test! ohne Vorwiderstand betrieben. Die lebt immer noch. -als Treiber verwende ich MOS SN7002 (ist auch im SOT-23)(ich habe die Teile halt), das geht dann direkt ohne Vorwiderstand, die machen ca 200mA Dauerstrom und 700mA Impulsstrom mit, das reicht aus. Wenn ich alle Ausgänge benötige nehme ich auch schon mal einen ULN2803 als SMD. Der braucht auch wenig Platz. -der 7805 ist übrigens ein SMD und braucht mit Sicherheit weniger Platz als eine z-Diode, ein Widerstand und ein BC ! Ich hatte auch Probleme mit der Abwärme bzw Leistung des Widerstand, wobei das noch aus meiner 1. Version mit einem S1200 und ext BrownOut stammt, hat sich aber bewährt, kostet 50 Cent und läßt sich einfach und Betriebssicher aufbauen. -mit dem Code hast Du recht, das geht effizienter, aber das stammt von maddax das habe ich auch nur übernommen. Der Code ist übrigens für einen Tiny15 (bzw bei mir auch noch auf alten 90S1200) ohne SRAM ausgelegt. Das bedeutet bei Vorsicht mit verschachtelten Sprüngen und kein Push/Pop. -für meine Codeanteile gilt GPL mit Quellenangabe ist ok Gruß Willi
Hallo Willi, - die MOS SN7002 sind nett - leider bei Segor nur Bestellware; ebenso der 7805 im SOT-23. Woher beziehst Du sie? Das ist der Vorteil der Transistor-Variante - alles "Stangenware". Der 78L05 scheint mir zudem mit 1,80 (Segor) reichlich teuer. Z-Diode, Widerstand und BC bekommt man schon hingequetscht ;-) - Für die Ausgänge müßte man auch Schieberegister vorsehen können - aber es gibt wohl keine mit Schaltausgang. Mir langen die 4 Ausgänge aber vollkommen - wie gesagt, Wagenbeleuchtung. Da bräuchte es eigentlich nur 1 Ausgang... - Den fehlenden SRAM hatte ich nicht bedacht - hatte mich schon darüber gewundert, wieso im Code der Stackpointer nicht initialisiert wird (dachte, das geschieht wie beim AVR-GCC automatisch) Habe mal meinen Schaltplan/Platine/Code angehängt, vielleicht nützt es wem. Das funktioniert so übrigens nur mit dem 13er, der externe IRQ hängt auf Pin PB1 und nicht PB2. Grüße, Sebastian
Hallo nochmal, habe gerade entdeckt, daß es den BSS138 als Lagertyp gibt - mit 0,2A kann man schon was anfangen. Außerdem kann man besser zwei Ausgänge parallel schalten, wenn´s mal etwas mehr Leistung sein soll. Mal sehen, was ich noch so finde... Grüße, Sebastian
Hallo Sebastian, ich hab die 78L05F (SOT89) von Segor 41 Cent(bei 10er Staffel) mos im sot23 gibt es da auch, die hatten mal welche von Zetex (sind nicht mehr im Katalog) die machten 1A!! mit. gruß willi
Hallo Willi, ich muß wohl mal meine Brille putzen - den 78L05F habe ich nach langer Suche auch gefunden. Allerdings ist das Preis-Leistungs-Verhältnis der Diodenlösung einiges günstiger - und so knapp ist der Platz nicht. Für die Ausgänge hatte ich kurz IRF7313 ins Auge gefaßt und mal ins Layout eingebaut - aber auch aus Preisgründen schnell wieder verworfen. Ich möchte die angepeilten 25 Decoder möglichst günstig realisieren - da ist die Transistorlösung ungeschlagen. Schönen Abend, Sebastian
Hallo Sebastian, ich steh nun mal auf die sicheren sachen und bei 25 Decodern macht das höstens 5 euro unterschied. R+Z-Diode+BC kostet auch 25-30 cent und Du nußt die Ströme recht genau ausrechnen sonst kocht dir die diode oder der Vorwiderstand. Vorteil der z-dioden lösung ist aber auf jedenfall, das Du für den elko einen 6V Typ nehmen kannst, das spart richtig baugröße! Ich brauche den aber schon wegen dem TLE (meinem motortreiber) direkt am gleichrichter und deswegen ist das für mich kein nachteil. schönen Abend willi
Hallo Sebastian, so hab ich mir das auch vorgestellt, nützliche Infos ohne viel blabla. Mal sehen ob diesen Winter noch ein wenig Zeit übrig bleibt, dann werde ich auch mal ein paar Seiten machen. Ich hab mal ein paar Bilder meiner bisherigen DCC Projekte angehangen (mit Codesammlung hat das hier dann nicht mehr viel zu tun), da fehlt eigentlich nur noch meine Zentrale, die aber in Anbetracht des Preisverfalls einer Roco weichen mußte. Der Weichendekoder entstand schon 1999 und läuft mit einen 8515 oder 4414 (geht auch mit mega8515) der fehlt auf dem Bild. Damals waren die Avr's noch recht teuer, da hab ich halt für jedes Modul ein 8 fach Dekoder gebaut, heute würde ich das nicht mehr so machen und jeder Weiche einen eigenen verpassen. Die ursprüngliche Software verwaltet je Dekoder zwei vierer Addressblöcke also zb für 8 Weichen und dazu auch 8 Signale. Wobei bei eine Signalausgang fehlt, der Pin wird für das DCC Signal gebraucht. Zur Zeit überarbeite ich gerade die Software, ich will die Addressen nicht auf zwei vierer Blöcke festlegen, sondern jeder Weiche eine bliebige Addresse zuordnen können, desweiteren will ich einen Addressbereich (zB Weiche 1-10) als Fahrstraßen nutzen. Das bedeutet ein Weichenausgang hat eine Einzeladdresse und gehört womöglich auch zu ein oder div. Fahrstraßen dazu. Das heißt man kann dann auch über Zentralen bzw Weichkeypads, die das nicht unterstützen, gleich mehrere Weichen als Fahrstarße schalten. Analog dazu sollen auch die Signalausgänge von verschiedenen Weichen abhängig sein. Dann ist da noch mein Universal Zubehör Dekoder, der müßte so ungefähr das können, was Du gerade baust. Die Platine ist so aufgebaut, das man die rechte Seite auch einfach abschneiden kann. Von links->rechts: Gleichrichter und Stabi, Atmel , ULN für 7 Ausgänge oder 2x BC für 2 Ausgänge bestücken und rechts oben rs232, unten 4 Eingänge. Mit diesem Aufbau ist das sehr flexibel, ob als Staßenampel, Rückmelder oder auch als Zubehördekoder. Mein erster Lokdekoder noch mit 90S1200 und einer Platine mit massenhaft Dukos. Der ist auch so ungefähr 6 Jahre alt, da war der S1200 die günstigste Lösung. Da der 1200 nur einen Timer hat ist da die Software noch ein wenig mehr verschachtelt als oben beim T15 Dekoder. Und mein aktueller Dekoder mit Tiny15. Der ist ja schon weiter oben beschrieben. Die Platine hab ich einseitig ausgelegt, ich nehme 0,5er Material, brech die durch und kelb sie zusammen, dann am Rand 5 Bögen angelötet, so spar ich mir die Dukos. Man kann den Motorteil auch nur abschneiden, dann hast Du einen klasse Zubehördekoder mit 2 Ausgängen im Format 16x20mm. Du bräuchtest noch nicht mal die Software ändern: einfach ein Lokaddresse zuweisen und die beiden Ausgänge machen Fahtrichtungsabhängig Licht. Zum Schluß noch ein paar Bilder von meiner Dekoder Test- und Entwicklungsplatine. Da sind noch ein paar IC geparkt und div Versionen von Stabis (auch mit z-diode) drauf. LEDs für F1-F4, Licht vor-rück usw. Viele Grüße Willi
ich nochmal, nicht meckern, aber Adresse wird natürlich nur mit eimem d geschrieben. gruß willi
Toralf Wilhelm wrote: > ich nochmal, nicht meckern, aber Adresse wird natürlich nur mit eimem d > geschrieben. > gruß willi Das ist aber nur bei uns so, die Amis schreiben es auch mit 2 "d"s... Duck & wech... ...
Hallo ihr, in Gedanken bei der Roco Multimaus wäre eine DCC-Version mit z.B. 8 oder 12 Ausgängen (bis max. 20 möglich) mal was "feines". Es wäre z.B. nicht schlecht das Licht einzeln schalten zu können (Rangierfahrt = beidseitig weiß, angehängte Wagen = vorn weiß, Schublok= hinten rot etc...) macht schon 4 Ausgängen, dann z.B. zwei Innenraumleuchten, würde auch nochmal 2 Ausgängen machen, bei festen Zugverbänden und eventuell durchgeschleiften Funktionsdraht für Innenraumlicht wäre das nochmal ein Ausgang... Mit den oben genannten "Gedanken" wollte ich auch nur mal fragen ob da vieleicht auch schonmal jemand was gemacht hat? Wegen der Größe und den Ausgängen dann z.B. auf einen SMD mega8, die sind auch schön klein. Patrick
Patrick wrote: > Wegen der Größe und den Ausgängen dann z.B. auf einen SMD mega8, die > sind auch schön klein. > Hallo Patrick, an den mega8 habe ich so in Richtung Lastreglung auch schon mal gedacht, allerdings eher wegen den AD Wandlern und 8MHz int. Tackt, die Sache mit den Funktionsausgängen fällt dabei mit ab. Gruß Willi
Toralf Wilhelm wrote: > Patrick wrote: > >> Wegen der Größe und den Ausgängen dann z.B. auf einen SMD mega8, die >> sind auch schön klein. >> > Hallo Patrick, > > an den mega8 habe ich so in Richtung Lastreglung auch schon mal gedacht, > allerdings eher wegen den AD Wandlern und 8MHz int. Tackt, die Sache mit > den Funktionsausgängen fällt dabei mit ab. > > Gruß Willi Der Mega48 dürfte vermutlich reichen und hat eine kleinere interne ADC-Referenz, womit die Strommessung zur Regelung vermutlich einfacher wird. ...
Hannes Lux wrote: > Der Mega48 dürfte vermutlich reichen und hat eine kleinere interne > ADC-Referenz, womit die Strommessung zur Regelung vermutlich einfacher > wird. > Guten Morgen, der reicht auch. Die Lastreglung, habe ich mir aber über das messen der Induktionsspannung immer unmittelbar nach jedem PWM-Impuls gedacht (oder auch jedem 10. oder 100. mal sehen wie oft das nötig ist). Dazu hatte ich für jede richtung einen Spannungsteiler (wegen der unterschiedlichen Polarität) gedacht und die dann je an einen AD Wandlereingang gelegt. (Pins sind ja genug vorhanden) Für mich ist der Aufbau mit möglichst wenig Bauteilen wichtig, weil kleiner als 1206 ist für Handarbeit (Platinen herstellen, bestücken) richtig Zeitaufwendig. einen guten tag euch allen willi
Hallo, könnte mir jemand ein Schaltbild und Codefragment für einen Attiny15 mit PWM und Lastregelung zeigen. Ich kann (mittlerweile) DCC hören und zugehörige PWM Ansteuerung auf einen DC-Motor machen , bin aber nicht in der Lage den lasrgeregelten Teil zu kapieren ... Ich habe nicht die geringste Ahnung, wie ich PWM und LastRegelung lösen soll ! g yjn
yjn wrote: > Hallo, > > könnte mir jemand ein Schaltbild und Codefragment für einen > Attiny15 mit PWM und Lastregelung zeigen. > > Ich kann (mittlerweile) DCC hören und zugehörige PWM Ansteuerung > auf einen DC-Motor machen , bin aber nicht in der Lage den > last geregelten Teil zu kapieren ... > > Ich habe nicht die geringste Ahnung, wie ich PWM und LastRegelung > lösen soll ! > Hallo, T15 mit Lastreglung, hat meines Wissens noch keiner gemacht. Geht auch nur theoretisch. Die Software oben nutzt fast den gesamten Flash. Ein AD Wandler hat er, wenn Du aber noch Fahrtlicht haben willst, müsstest Du schon den Reset Pin mit nutzen. Ich denke mal, das dafür ein ATmega angebracht ist. Der läuft mit 8MHz, hat genug Platz im EEprom, da kann man schön Lasttabellen ablegen. Schönen So Abend noch Willi
Hallo, ich wäre an einem Beispiel interessiert, wie eine Schaltung zur Lastregelung aussieht und wie das mit der Software zusammenspielt. Ich habe versucht, das rauszukriegen, bin aber zu sehr Elektronik-Laie, also brauche ich was einfaches als Vorlage zum verstehen. Statt des tiny15 koennte man auch den tiny25 oder tiny45 nehmen, da is genug Flash. Die mega's sind zu gross, die passen nicht in eine Lok :) Danke yjn
yjn wrote: > Hallo, > > ich wäre an einem Beispiel interessiert, wie eine Schaltung zur > Lastregelung > aussieht und wie das mit der Software zusammenspielt. Ich habe versucht, > das rauszukriegen, bin aber zu sehr Elektronik-Laie, also brauche ich > was einfaches als Vorlage zum verstehen. > > Statt des tiny15 koennte man auch den tiny25 oder tiny45 nehmen, da is > genug Flash. Die mega's sind zu gross, die passen nicht in eine Lok :) > Guten Morgen Yin der mega8 als SMD ist doch kaum größer als der T15. Die Platine wird halt wesentlich aufwendiger. Ansonsten hab ich oben schon einmal geschrieben, wie ich es plane: Spannungsmessung der Motorinduktionsspannung unmittelbar nach einem PWM Impuls. Diese Spannung ist schön groß, das bedeutet es reicht ein einfacher Spannungsteiler aus 2 Widerständen und einem C parallel zum Eingang aus (am besten 2x an je einen AD Wandlereingang für jede Fahrtrichtung wegen der Polarität). Um so größer die Belastung des Motors wird, um so mehr Strom fließt und um so größer wird die Induktionsspannung. Wenn Du einen Ozzi hast siehe es Dir einmal an. Ich denke das läßt sich viel einfacher machen als den Strom durch den Motor womöglich über einen Widerstand mit Verstärkung oder differenziell am AVR auszuwerten. Was Du mit dem so gewonnenen Messwert machst, ist eine andere Frage. Ich glaube ich würde eine Lasttabelle im EEprom anlegen, so ähnlich wie die Tabellen für die Geschwindigkeit je Fahrstufe. So etwas gibt es ja auch bei einigen Decodern. viele Grüße Willi
Hallo Willi, doppelt Danke für die Antworten ! Ich glaube, das Prinzip habe ich verstanden. Motor dreht in den PMW-freien Zeiten, aus lauter Trägheit, weiter, erzeugt dadurch eine Spannung, die proportional zur Umdrehung ist. Die Umdrehung wird als proportional zur Last angenommen und als Spannung gemessen. Langsame Umdrehung, kleine Spannung, richtig ? Schnelle Umdrehung, grosse Spannung, richtig ? Reicht für eine solche Messung an einem induktiven Bauteil ein Spannungsteiler aus ? Müssen nicht noch Dioden und solch Zeug dazu, um die messenden Bauteile zu schützen ? Dazu noch die Frage nach der P und I Regelung, statt einfacher Tabelle ... Sorry wenn ich nerve, aber wenn ich wüsste wie es geht, würde ich nicht fragen ... tiny15/25/45 als smd sind noch beinahe zu gross :) g yjn
Guten Morgen, > Motor dreht in den PMW-freien Zeiten, aus lauter Trägheit, weiter, > erzeugt dadurch eine Spannung, die proportional zur Umdrehung ist. > Die Umdrehung wird als proportional zur Last angenommen und als Spannung > gemessen. > > Langsame Umdrehung, kleine Spannung, richtig ? > Schnelle Umdrehung, grosse Spannung, richtig ? nicht ganz, die Spannung, die er induziert hängt von der Energiemenge ab, die beim letzten Impuls aufgenommen wurde. Oder anderst gesagt, im Leerlauf ohne Last, fließt bei jedem Impuls nur der Leerlaufstrom durch den Motor. Nur diese Energiemenge erzeugt dann eine Induktionsspannung. Wenn der Motor nun belastet wird steigt der Strom je Impuls proportional zur Last an und deswegen ist auch mehr Energie im Kern (Rotor) vorhanden, die dann auch eine größere Induktionsspannung erzeugt. > Reicht für eine solche Messung an einem induktiven Bauteil ein > Spannungsteiler aus ? siehe Anhang > Müssen nicht noch Dioden und solch Zeug dazu, um die messenden Bauteile > zu schützen ? nein wenn der Spannungsteiler hochohmig genug ist reichen die internen Dioden im AVR aus > Dazu noch die Frage nach der P und I Regelung, statt einfacher > Tabelle ... hab ich auch noch keine Erfahrungen, aber ich denke es gibt bei Leerlauf der Lok eine bestimmte Induktionsspannung (die ist vom Motor abhängig). Die Spannung wird mit steigender Fahrstufe etwas größer (logisch der Ansteuerimpuls wird ja auch länger). Diese Werte je Fahrstufe würde ich als Ausgangswerte nehmen ( egal ob als Tabelle für jede Fahrstufe oder nur als Kuver/Gerade mit Anfangs und Endwert). Wenn jetzt die Last steigt, steigt auch die induktionsspannung, wenn sie sinkt (weil du bergab fährst) sinkt die induktionsspannung. Du muß jetzt nur noch daraus eine Reglung ableiten. Ich würde das ausprobieren (jetzt hab ich mich als Praktiker geoutet). > Sorry wenn ich nerve, aber wenn ich wüsste wie es geht, würde ich nicht > fragen ... andere Gedankengänge sind manchmal ganz hilfreich. > tiny15/25/45 als smd sind noch beinahe zu gross :) Mal im ernst, was hällst Du vom tiny24/44/84, der ist noch gut Lötbar hat genug Ausgänge, AD Wandler usw. gruß Willi
Hallo Willi >nicht ganz, die Spannung, die er induziert hängt von der Energiemenge >ab, die beim letzten Impuls aufgenommen wurde. Oder anderst gesagt, im >Leerlauf ohne Last, fließt bei jedem Impuls nur der Leerlaufstrom durch >den Motor. Nur diese Energiemenge erzeugt dann eine Induktionsspannung. >Wenn der Motor nun belastet wird steigt der Strom je Impuls proportional >zur Last an und deswegen ist auch mehr Energie im Kern (Rotor) >vorhanden, die dann auch eine größere Induktionsspannung erzeugt. ich glaube da irrst du dich. Stell dir vor du drehst den Motor mit konstanter Drehzahl, dann ist auch die Spannung die am Motor rauskommt konstant und nur von der Drehzahl abhängig. Eine Spannung muß dazu nicht vorher angelegt werden da der Motor als Generator arbeitet. Das was du meinst ist sicher eine Spannungsspitze die unmittelbar nach abschalten der Spannung entsteht. Die Lastregelung soll eine konstante Geschwindigkeit bei Laständerung ermöglichen. Dazu wird die Spannung am Motor in den Ansteuerpausen gemessen.Die Spannung ist proportional zur Drehzahl und damit zur Geschwindigkeit. Die Regelung muß jetzt bei einer Abweichung vom Sollwert nachregeln. Ob die Regelung dann als P PI oder PID Regler ausgelegt wird hängt von den Möglichkeiten des Programmierers ab. Ich find übrigens auch den tiny 24/44/84 recht interressant.
Hallo J, ich glaub wir versehen uns falsch. Gemessen wird in der Impulspause. Allerdings ist die Spannung, die dort zu messen ist nicht nur von der Drehzahl abhängig sondern auch von dem Strom der geflossen ist. Beispiel: Impulsbreite für 100 Umdrehungen, Motor läuft ohne Last, jetzt wird der Motor belastet, (drehzahl würde abfallen) wir ändern die Impulsbreite auf wiederum 100 Umdrehungen. Die Induktionsspannung ist aber größer trotz gleicher Drehzahl und gleicher Spannung. Die Spannung lag aber jetzt länger an, sprich es floß länger Strom -> es wurde mehr Energie in die Motorspule gesteckt und somit wird auch die Induktionsspannung größer. Diese Induktionsspannung liegt nur unmittelbar nach dem Impuls an! Ich meine nicht die Generatorspannung, die der Motor wie Du richtig schreibst induziert, wenn man ihn einfach dreht. Ich meine die Gegeninduktionsspannung, die die Motorspule, beim abschalten des Ansteuerimpuls erzeugt (auch wenn der Motor überhaupt nicht dreht). Ich denke wenn man die Generatorspannung nutzen will, müßte man egal wie die PWM freq. ist Ansteuerpausen zum messen einfügen. Die Gegeninduktion der Motorspule, kann man aber sofort nach dem Ansteuerimpuls messen, es müßte nur eine min Impulspause vor dem nächsten Impuls eingefügt werden. Der AVR speichert den Wandlereingang zwischen so das auch nicht einmal die Wandlerzeit berücksichtigt werden müßte (das trifft aber immer zu). gruß willi
Hallo Willi ich hab das schon verstanden was du meinst. Es erscheint mir aber ziemlich kompliziert zu sein diese Spannung vernünftig zu messen und daraus einen Wert für die Regelung abzuleiten. Das was du messen willst ist ein relativ kurzer Impuls wogegen die erzeugte Generatorspannung einen etwa konstanten Wert liefert. Im letzten MIBA Digitalsonderheft ist die Wirkunsweise eines lastgeregelten Dekoders erläutert mit entsprechenden Oszillogrammen. Es wird nur die Generatorspannung gemessen und damit eine Drehzahlregelung (=Geschwindigkeitsregelung) erreicht.So machen es zumindest die Profis. Aufgrund der kleinen Abmessungen für Lokdekoder beschränke ich mich erst mal auf Zubehördekoder. Mein erstes Projekt ist ein Zubehördekoder der 8 Servos ansteuern kann. Viele Grüße
Ich möchte mir einen Decoder für meine LGB-Loks bauen. Welchen Motortreiber nehme ich da am besten? 3A Müsste er schon verkraften. Oder kann man dazu mehrere Treiber parallel schalten?
Guten Morgen, @ Silvio, da hast Du doch Platz ohne Ende, such mal nach H-Brücke das kannst Du doch mit 4 FETs machen. @ J.Schöbel, bin inzwischen bei der Generatorspannung angekommen, mache vier Messungen und nehme den Mittelwert. Gruß Willi
Hallo an Alle, ich verfolge den Beitrag schon länger und nun hab ich auch die Zeit zum Basteln. Vorab hätte ich da mal paar Fragen zum Encoder; Frage 1: Theoretisch müßte ich doch wenn ich nur ein und die selbe Lok ansteuern würde zb.: folgende Pakete senden, Leerzeichen bitte wegdenken dienen nur zur besseren Übersicht. 11111111111111 0 00000011 0 01110111 0 01110100 1 // LOK 11111111111111 0 11111111 0 00000000 0 11111111 1 // Leerlaufpaket Lok_Licht =1; Lok_Richtung =1; Lok_Speed = 0x07; DCC_Adressbyte= 0x03; vom Timing sieht es auch auf dem Oszilloskopen gut aus nur leider fährt meine Lok nicht los. Hat jemmand eine Idee wodran das liegen könnte? Frage 2: Muss am Anfang noch irgendwas gesendet werden, dass die Loks wissen nun im Digitalbetrieb? Oder fehlt bei mir noch eine Art Initialisierung? Gruß Volker
hallo, ich hab mir jetzt die nullen und einsen nicht komplett angesehen, aber ich mal gelesen, dass die nachricht nach 5ms wiederholt werden muss. Ist das bei dir der fall? gast
Hallo, ich sende diese 2 Pakete in einer endlosschlaufe. Und das Idle Paket braucht ja länger als 5ms somit müßte Lok 3 danach doch wieder ansprechbar sein,... Volker
Hallo Volker, hatte auch einmal einen Encoder gebaut. Habe einfach nur die benötigten Pakete in Endlosschleife gesendet. Leerlaufpaket habe ich nicht gesendet. Wenn Dein Booster ok ist müßte das eigentlich gehen. Hier noch mal ein die Grundlagen in deutsch: http://www.lokodex.de/mo/m_digital_dccprot01.htm Ich hoffe Herr Lindecke hat nichts dagegen. Gruß Willi
Hallo Willi, vielen Dank für den Tip! Nun läuft die Lok nach meinen Kommandos :-) MfG Volker
Hallo Ich habe mir mal erlaubt, die Schaltung von Maddax zu dimensionieren und aufzubauen. Jetzt habe ich das Problem, nicht zu wissen, welches Programm die aktuellste Version ist. Das Programm von Willi wird wohl nicht damit laufen können, da in dessen Schaltung der Pin6 vom Attiny15 ein Inhibit-Signal für seinen "Booster" ausgibt, während bei Maddax dort das Vor/Rück- Signal ausgegeben wird. Frage: Kann mir jemand das letzte Programm, das auf Maddax´Schaltung basiert als Hex-Datei senden? MfG Paul
Nabend zusammen, Bräuchte eure Hilfe; wie wird bei langen Adressen das Prüfbyte gebildet? Adressbyte1 ^ Adressbyte2 ^ Datenbyte1 ^ Datenbyte2 = Prüfbyte gruß Thomas
Hallo Thomas, genau so. Es werden immer alle gesendeten Bytes xor verknüpft. Das ergibt dann das Prüfbyte. Gruß Willi
Nabend, hab follgendes Problem, kann Loks ansteuern usw, nur leider bekomm ich bei Roco Loks (hierbei, ist mir das speziel aufgefallen) nicht ans leuchten. Wird das Licht dort anders angesteuert? 01110111 Datenbyte L Licht müßte doch so aktive sein, wenn das das Datenbyte so aussieht,... MfG Thomas
@Thomas Welchen von den verschiedenen Quellcodes hast Du in Betrieb? Kannst Du ihn mal hierher posten? Ich bin nämlich genau so schlau, wie Paul weiter oben. Gruß Erwin
Hallo Thomas, bei 14 oder 28/128 Fahrstufen? 14-> Lichtbit wird im Fahrbefehl mit übertragen. 28-> Lichtbit (FL) wird über extra Befehl mit der Funktionsgruppe F1-F4 übertragen. Gruß willi
Hallo Ich habe mal den Lokdecoder von Maddax aufgebaut und getestet. (siehe Bild) Ergebnis: (mit 4 verschiedenen Modellbahnmotoren) mit dem Programm vom 15.9.05 funktionieren die beiden Funktionsausgänge, aber der angeschlossene Motor läuft nicht. mit dem Programm vom 9.7.06 funktionieren die Funktionsausgänge, aber der Motor dreht immer in die gleiche Richtung. Stop funktioniert. Mit den Änderungen von Zdenek am 26.10.06 und Maddax am 30.10.06 funktionieren wieder nur die Funktionsausgänge aber der Motor nicht. Es müßte also in dem Code vom 9.7.06 die Stelle gesucht werden, an der das Richtungssignal ausgewertet wird. Irgendwas ist da im Argen, nur leider sind méine Assemblerkenntnisse zu gering, um selbst zu finden, woran es liegt. Maddax selbst ist "weg von der Modellbahn" :-( MfG Paul
Hallo Es ist vollbracht!! :-) Ich hänge mal das jetzt funktionierende Programm an. Es läuft auf der Schaltung von Maddax, die ich weiter unten im Tread dimensioniert hatte. Ich habe die Bezeichnung einer Sprungmarke ändern müssen, da der vorherige Name eine reservierte Bezeichnung war. Weiterhin habe ich noch nach dem Vorschlag von Zdenek die Pulsweitenfrequenz auf ca. 100Hz heruntergenommen. Mit Bascom wäre das nicht passiert, weil dort schon bei der Eingabe von reservierten Befehlen als Sprungmarkenname eine Fehlermeldung kommt. Assembler ist schon ein hartes Brot. :-)) Ohne die ausführliche Kommentierung von Maddax wäre "alles zu spät" gewesen. MfG Paul
@Willi Hallo Willi kannste mir mal in Bit-form ein Beispiel angeben für 28 Fahrstufen + Fehlerprüfung + Licht an, weil bei mir hängt es irgendwo und ich find den Fehler nicht,... thz Thomas
Hallo Paul, Das ist super. Ich hatte selbst versucht die Schaltung von Maddax nachzubauen und bin an den gleichen Problemen gescheitert wie du am Anfang. Die Schaltung von Willi habe ich nachgebaut. Die funktioniert sehr gut, aber das Löten von SMDs ist bei mir eher Glücksache (zu breite Finger und Altersweitsichtigkeit) deshalb gefällt mir dein Aufbau viel besser. Würdest du ggf. noch dein Platinenlayout posten? Danke. Mfg Arno
So, hier sind die EAGLE-Dateien für den Decoder von Maddax. Ich weise darauf hin, daß die Schaltung von ihm entwickelt wurde. Lediglich das Layout und diese Dimensionierung stammt von mir. Vielleicht kriegt es jemand noch kompakter hin. Fragen zum Programm KANN ich nicht beantworten, da ICH NICHT der PROGRAMMIERER bin. Die Schaltung wurde mit einem Eigenbau-Booster am Rechner getestet. Darauf läuft der DDW-Server und das Programm Rayliplan. Zum Programmieren der Adressen u.s.w. wurde Rayliprog verwendet. Vier verschiedene Motoren von PIKO, ROCO und GÜTZOLD laufen prima damit. Da auch ich nicht mehr der Jüngste bin und die Augen das "SMD-Granulat" nicht mehr erkennen können, habe ich alles auf DIL-Basis ausgelegt. Für H0 geht das meist noch. :-) So, FF! (Fiel Fergnügen) Paul
Ach so; über Einbaubeispiele würde ich mich freuen. Wenn das Layout kommerziell genutzt wird, gibt es Mecker vom Meister, wie Werner schon sagte. Mehl:*lexi*et*everymail*.*net Alles ohne Sterne, wegen der kleinen Spamroboterchen ;-) Paul
Guten Morgen, @Thomas: Kurze Addressierung FL ein: Preamble 0 Adresse 0 Daten 0 Prüfbyte 0 -> 1111111111 0 0AAAAAAA 0 10010000 0 EEEEEEEE 0 Schau mal hier: http://www.digital-bahn.de/info_tech/dcc.htm @Arno: Wenn Du die Schaltung in DIL aufbaust, dann würde ich es auch mit dem L272 als Endstufe machen (8 Pins klein simple Ansteuerung). Als SMD (wenn der gesammte Aufbau halt noch kleiner werden soll) ist für mich der Kurzschlußschutz im TLE mit seinen SO20 mehr Wert als die etwas kleinere Bauform (SO16) des L272. @Alle: Zur Entstufe, kennt jemand eine kleine(re) SMD H-Brücke (mind 25V/1A/temp und Kurzschluß-Schutz/Bezahl-/Beschaffbar) ? Gruß Willi
@ Willi kleiner Fehler im Format. Nach dem Prüfbyte kommt eine 1. Die kann auch schon Bestandteil der nächsten Präambel sein. Viele Grüße
Guten Morgen, @Gordon Du hast natürlich Recht! Am Ende jedes Befehls kommt immer ein highbit! Aber so ist das nunmal, wenn man nur schnell mal etwas abschreibt, genau dieser Fehler ist auch bei meinen obrigen Link vorhanden und hier auch nur bei den Befehlen für die Funktionsgruppen. Viele Grüße Willi
Habe zufällig eine weitere, sehr interessante OpenSource-Quelle gefunden: http://www.opendcc.de/ Insbesondere der Zubehördekoder (http://www.opendcc.de/modell/opendecoder/opendecoder2_hw_sch.html) erscheint mir sehr ausgereift. Grundlage war wohl der Acc-Dekoder von http://www.bahn-in-haan.de/ aber, wie beschrieben, deutlich verbessert! Gruß, Klaus
@Klaus Ich habe die Variante 1 mit Attiny2313 aufgebaut. 3 Stück davon arbeiten prima auf meiner Anlage. MfG Paul
Guten Tag, ich habe das Programm von Willy http://www.mikrocontroller.net/attachment/19777/T15_lok_dec.zip benutzt, aber so wie es ist, scheint es nicht zu funktionieren. Auf Programmierimpulse z.B. für eine neue Adresse spricht der Decoder an, die Lok ruckt kurz, aber nur 1 Funktionsausgang geht, Motor wird im Fahrbetrieb nicht angesprochen. Hat auch jemand das gleiche Problem? Beim Assemblieren mit dem AVR-Studio bringt es eine Menge Warnungen, dass eine ungerade Zahl von Bytes im EEprom-Bereich sein soll aber keine Fehlermeldung an sich. Gruß Sigmar
Hallo Sigmar, wenn Du mein Programm nimmst, mußt du auch den TLE als Motorendstufe nehmen! Es geht nicht mit einem L272! Ansonsten sieh Dir mal den EEprominhalt an, Erklärung am Ende vom asm. Die Werte für Vmin,max usw sollten schon einigermaßen sinnvoll sein. Gruß Willi
@Willi Danke erst mal für Deine Antwort. Ich habe tatsächlich die Schaltung von Paul mit dem L272 benutzt und dachte, es geht damit auch. Ich bin halt nur Modellbahner und kein Programmierer/Elektroniker. :-( Die Schaltung von Paul läuft aber auch mit dessen Programmänderung nur in die Rückwärtsrichtung anständig; in Vorwärtsrichtung läuft der Motor erst bei Vollgas los und läßt sich nicht herunterregeln. So ist das Ganze leider wertlos für mich. Schade. Da habe ich die Platinen umsonst von meinem Kollegen ätzen lassen. Gruß Sigmar
@Sigmar, ich habe auch den Dekoder von Paul mit dem L272 nachgebaut und habe den gleichen Effekt. In der einen Richtung läuft alles gut, in der anderen Richtung läßt sich der Motor nicht richtig regeln und die Richtungsumschaltung klappt manchmal auch nicht so richtig. @Paul, hast du noch einen Tipp für uns? Muss mann ggf. am Motor noch was verändern? Entstörkondensator, Vorwiderstand oder sowas? Danke erstmal. Gruß Arno
@Arno und Sigmar Ich habe gerade gesehen, daß das Register TCCR1 bei Vorwärts/Rückwärtsfahrt noch mit den falschen Werten geladen wurde und jetzt auch auf die niedrigere PWM-Frequenz angepasst. Versucht jetzt mal das Programm. Es MUSS mit der Avr-Studio Version 4.13 übersetzt werden, weil in der alten Version die Datei Tn15def.inc Fehler bringt. Assembler ist so schwer zu überblicken. (Seufz!) Schönes Wochenende und rangiert langsam ;-) MfG Paul
Hallo zusammen! Ich bin neu hier und habe eure Beiträge mit grossem Interesse gelesen. Und weil ich mich im Rahmen der Entwicklung eines Eigenbau-DCC-Decoders für H0 mit den selben Fragen herumquälen musste - oder es immer noch tue - habe ich mich beschlossen, mal von meinem Projekt zu berichten. Mein Decoder soll besonders im Bereich der Lokbeleuchtung möglichst realistische Funktionalität anbieten, also beispielsweise die verschiedenen Scheinwerfermuster, wie sie von den Bahngesellschaften (in meinem Fall ist das die SBB) vorgeschrieben werden, anhand einiger CV-Flags umsetzen. Das Grundkonzept entstand im Spätsommer 05, und ist in mehreren Überarbeitungsschritten immer perfekter geworden. Mittlerweile unterstützt die Software 16 individuell gedimmte Leuchtkanäle, welche beinahe ohne Einschränkungen konfiguriert werden können (z.B. als Fernlichtscheinwerfer deklariert oder mit Effektkanälen verknüpft). Daneben ist der Motorteil genau nach NRMA-Norm implementiert, d.h. mit SpeedTable, Motorkurve, Vmin-Vmid-Vmax-Konfiguration etc. Bloss die Lastregelung habe noch nicht angegangen; da hinderten mich die selben Unsicherheiten wie sie in diesem Thread schon aufgetaucht sind. Aber auch dieses Feature ist geplant. Ich werde mal mein Projektordner nach einigen anschaulichen Dateien durchforsten, muss aber noch anmerken, dass ich in diesem Forum wohl ein bisschen ein Exot bin, da ich in C programmiere und Silabs-Mikrocontroller (z.B. den C8051F310, siehe http://www.silabs.com/public/documents/tpub_doc/dsheet/Microcontrollers/Small_Form_Factor/en/C8051F31x.pdf) verwende. Diese Chips sind extrem leistungsfähig (bis zu 25 MIPS) bei bloss 5mA, verfügen selbst bei winzigen Massen (ab 3 x 3 mm) über ein grosses Repetoire an integrierter peripherer Hardware (PWM, ADC, SPI etc.) und können dank JTAG built-in-programmiert und debugged werden. Doch bevor ihr fragt: nein, ich werde nicht von Silabs gesponsert! :) Ich bin nur sehr begeistert von den kleinen Chips, das ist alles. Aber ich muss auch zugeben, dass ich noch nicht allzu viele andere Mikros genauer unter die Lupe genommen habe; ich lasse mir also gerne die Vorzüge der Amtel-Chips erklären. :) Gruss, Nik
Moin moin, sagt mal wie sieht es eigentlich mit dem Funktionsdecoder aus? Gibt es da ne Version die richtungsabhängige und dimmbare Ausgänge hat? Andi
Hi, hab gerade gesehen, dass es da schon was gibt. Aber wie es aussieht nicht mit langer Adresse :-( Ist das evtl. machbar? Und wäre nicht schlecht wenn man die F-Ausgänge getrennt dimmen könnte. Andi
Hallo Alle, auf die Frage Zur Endstufe, kennt jemand eine kleine(re) SMD H-Brücke (mind 25V/1A/temp und Kurzschluß-Schutz/Bezahl-/Beschaffbar) ? fällt mir der TLE 4207 G, 0.8A Dauer, 1A Peak, max 45V ein. Ist bei Segor zwar auf abgekündigt, kann ich aber bei Infineon http://www.infineon.com/cms/en/product/channel.html?channel=ff80808112ab681d0112ab69db9b0341 immer noch als in Prod. finden. Ev. mit dem alten TLE 4207 verwechselt? Ist zwar etwas teurer als der TLE 4205 mit SO20 aber mit DSO14 schön klein. Ich hatte ihn mal vor längerem mit einem PIC DCC Decoder und N Loks im Einsatz, hat gut funktioniert. Gruß, Werner
Mit wachsender Interesse habe ich die Diskussionen verfolgt die hier Ablaufen. Da ich einen sehr interessierter Mitleser bin Frage ich mich ob es nicht einfacher ist fuer die Menschen die mit den Software fuer die ATMELS nicht so Bekannt sind (wie ich!), einfach auch die HEX Files zu hinterlegen zum direkten Programmieren in die Prozessoren. Auch ist es mir nicht ganz klar mit welchen Programm ich die ASM Files umsetzen sollte in dass HEX Format. Fuer die Richtige Programmierfreaks ist dies natuerlich ueberhapt keine Frage, aber fuer mich als normaler "Endverbraucher" schon! Ich habe schon ettliche PIC Prozessoren programmiert, aber immer mit HEX Files die von den Entwickler mitgeliefert wurden. Auf meine Homepage gibt es diverse Beispiele hierzu. Uebrigens zur Frage nach eine Brauchbare und auch gut Beschaffbare H Bruecke kann ich die ZXMHC6A07T8 der Fa. Zetex Empfehlen. Es ist eine 1,5A 60V H Bruecke. Habe ich gekauft bei Reichelt und kostet € 1,25. Datenblatt ist beigefuegt Gruss aus den Niederlanden, Paul http://members.home.nl/pamali/
Hallo Paul, kurze Antwort: siehe www.atmel.com/products/avr/ und dann nach AVRstudio suchen. Ist kostenlos und macht alles was Du brauchst. Gruß, Klaus
Hallo Klaus, und alle Andere die sich mit diese Materie auskennen Ich habe mir nach deiner Empfehlung dass AVR Studio Version 3.56 installiert. Wenn ich jetzt eine ASM Datei versuche einzulesen habe ich dass Problem es gibt kein Menuepunkt wo ich diese Datei einlesen kann. Ich finde nur bei FILE / OPEN als Vorgaben z.B. HEX Dateien, aber keine ASM. Wenn ich trotzdem eine ASM einlese (ueber *.*) wird diese Datei zwar eingelesen aber es gibt keine Moegligkeit nach eine HEX datei umzusetzen. Ich mache bestimmt etwas falsch, ab was? Wie schon mal gesagt, ich bin kein Programmierer sondern einen Benutzer...... Gruss, Paul http://members.home.nl/pamali/
Mit F7-Taste wird assembliert und gespeichert. Aber vermutlich hast Du vergessen, ein Projekt anzulegen... Also: - Leeren Ordner einrichten - AVR-Studio starten - neues Projekt anlegen, dabei den leeren Ordner wählen - zu einem Dateimanager wechseln (Explorer, Commander) - Quelltextdatei öffnen, - Text in Zwischenablage kopieren, - zu AVR-Studio wechseln, - Text einfügen, - Assemblieren und speichern (F7) - zum Dateimanager wechseln und nachschaun... Ist ein bissel umständlich, dass man immer ein Projekt einrichten muss, stört mich auch manchmal, wenn ich nur mal schnell etwas probieren oder assemblieren will, ist aber leider so... ...
Hi, man kann das Ganze auch noch per Kommandozeile machen, dann spart man sich das mit dem neuen Projekt. Macht die ganze Sache aber auch nicht einfacher. @Paul: Die Version 3.56 vom AVRStudio ist schon sehr alt, aktuell ist die Version 4.13 CU
Hallo Hannes und ... Es hat geklappt! Es ist tatsaechlich sehr umstaendlich aber ist ja egal wenn es dann doch funktioniert. Jetzt kann ich weiter Experintieren mit den Tiny (fuer mich Neuland). Wenn ich einen Brauchbaren Decoder gebastelt habe werde ich mich wieder Melden! Schoenen Dank fuer eure Hilfe! Gruss, Paul http://members.home.nl/pamali/
Hallo Zusammen, Ich habe jetzt Laengere zeit mit den TINY 15 Gekaempft. ich habe mir eine HEX File erstellt mit AVR Studio 4.13, den Decoder programmiert mit Ponyprog und den Decoder auf eine Steckplatine aufgebaut, mit Angeschlossenen Motor, aber es tut sich nichts. wenn ich den Decoder Auslesen oder Programmieren moechte bekomme ich immer wieder die Meldung NO ACK. Ich habe anschliessend nochmals alle Obenstehenden Kommentare duchgesehen und habe etwas von OSCCALL Werte Gelesen. Gesucht in Neuen TINY aber nichts gefunden. Muss ich den OSCCAL wert noch irgendwie in meine Programmierung Angeben oder reicht es die kompilierte HEX File einzulesen im Prozessor? Ich habe die von mir erstellte HEX File dec23-11.HEX mal Beigefuegt. Villeicht hat jemanden Lust mal zu Testen ob die file uebehaupt richtig kompiliert wurde. Gruss, Paul
Jeder Tiny15 hat seinen individuellen Calibrationswert in das High-Byte des Signature-Bereiches an Adresse 0 eingebrannt. Leider wird dies bei Reset nicht automatisch nach OSCCAL geschrieben, das ist erst bei neueren AVRs der Fall. Der Tiny15 rennt bei Auslieferung also nicht mit den geplanten 1,6MHz, sondern klappert mit irgendwas zwischen 0,8MHz und 1,5MHz vor sich hin, so wie es seine Fertigungstoleranzen erlauben. Beim Ausmessen (bei der Herstellung) wird das Calibrationsbyte zwar noch in die letzte EEP-Zelle und in die letzte Flash-Zelle (Low und High) geschrieben, wird aber von den meisten ISP-Programmen beim ersten Zugriff gelöscht und ist daher bei Verwendung von Ponyprog & Co nicht wirklich verwendbar. Um den Tiny15 zu calibrieren, muss man: - mit ISP-Programm das Calibrationsbyte aus dem Signature-Space ermitteln - im AVR-Programm das Calibrationsbyte in das I/O-Register OSCCAL schreiben Kleines Handycap dabei: Das AVR-Programm kann das Calibrationsbyte nicht lesen, das kann nur ein Programmer (ISP, HV-Ser.) von außen. Ein Programmer kommt zwar an das Calibrationsbyte heran, hat aber keinen Zugriff auf OSCCAL. Daher ist das Calibrieren des Tiny15 nicht ohne Mitwirkung des Menschen automatisierbar. Im DCC-Programm findet man im Reset-Block folgende Sequenz:
1 | ldi TEMP1, EEOSCCAL ;hole Oszillator Calibrierung |
2 | rcall readEEProm |
3 | out OSCCAL, Temp2 |
Das lässt darauf schließen, dass der Calibrationswert im EEPROM an der Adresse EEOSCAL erwartet wird. Die Suche nach EEOSCCAL ergab folgenden Treffer:
1 | .equ EEOSCCAL = 5 ;Speicherplatz OSCCAL im EEPROM |
Nun wissen wir, dass es sich um Adresse 5 handelt, also das 6. Element des EEPROM. Nun müssen wir ermitteln, woher das EEPROM seine Daten bekommt und finden das hier:
1 | ;** hier beginnt das EEProm ** |
2 | .ESEG |
3 | .ORG $0000 |
4 | |
5 | .db 0x01, 0x00 ; CV1 Adresse und CV2 StartSpeed |
6 | .db 0x80, 0x80 ; CV3 IncVAL und CV4 DecVal |
7 | .db 0x80, 0x71 ; CV5 MaxSpeed und CV6 OSCCAL |
8 | .db 0xFF, 0x01 ; CV7 Hersteller und CV8 Typ ID |
9 | .db 0xFF, 0xFF ; CV9 Frei und CV10 Frei |
10 | .db 0xFF, 0xFF ; CV11 Frei und CV12 Frei |
11 | .db 0xFF, 0xFF ; CV13 Frei und CV14 Frei |
12 | .db 0xFF, 0xFF ; CV15 Frei und CV16 Frei |
13 | .db 0x00, 0x02 ; CV17 HI-Byte und CV18 LO-Byte |
14 | .db 0x00, 0xFF ; CV19 Consist und CV20 Frei |
15 | .db 0xFF, 0xFF ; CV21 Frei und CV22 Frei |
16 | .db 0xFF, 0xFF ; CV23 Frei und CV24 Frei |
17 | .db 0xFF, 0xFF ; CV25 Frei und CV26 Frei |
18 | .db 0xFF, 0xFF ; CV27 Frei und CV28 Frei |
19 | .db 0x00, 0xFF ; CV29 Configuration Data und CV30 Frei |
Und wenn wir uns die Datenzeilen ansehen, stellen wir fest, dass immer zwei Bytes in einer Zeile notiert sind. Das 6. Element mit der Adresse 5 steht demnach in der dritten Zeile an zweiter Position und hat in diesem Quelltext den Wert 0x71. Auch im Kommentar erkennt man, dass es sich um den OSCCAL-Wert handelt, allerdings im DCC-Slang gleich noch mit einem "CV"-Namen versehen. Deine Aufgabe ist es nun - mit einem ISP-Programm (z.B. Ponyprog2000) das Calibrationsbyte Deines Tiny15 zu ermitteln, es in den Quelltext einzutragen, den Quelltext neu zu assemblieren, die neu assemblierte Hexdatei in den Tiny15 zu brennen... Ich lege in meinen Programmen das Calibrationsbyte übrigens immer in die letzte Flash-Zelle, so kann ich bei neuen AVRs gleich die Herstellerwerte benutzen. Manchmal ist es eben vorteilhaft, sich an gewisse Konventionen zu halten. ...
Hallo, kann Hannes nur zustimmen. Da Du jetzt aber die Stelle im EEprom kennst, kannst Du auch in Ponyprog den EEpromwert von Hand ändern und dann den Tiny programmieren. Aber aufpassen: bei Programmoptionen darf nicht "Datein wiederherstellen" angekreutzt sein, sonst überschreibt er Dir Deine Änderung wieder. Gruß Willi
Hallo Modellbahner, nach langer suche im Netz habe ich nun dieses Forum bzw. diesen Forum Eintrag gefunden. Leider muss ich zugeben das ich nicht ganz nachvollziehen kann was die letzten Software sowie Hardwareversionen sind. letzte Softwareversion die ich hier gefunden habe ist die Version 19.05.2007 von mad.dax und die letzte Hardwareversion habe ich von Paul Baumann gefunden 11.04.2007 Ist das der letzte Stand? Dann würde ich eine Bestellung tätigen und mir auch ein paar DCC Decoder bauen. Einen Guten Rutsch an alle Jens
@Paul Baumann (Dec_T15_Adv1_90.asm / 19.05.2007) Dank für eine funktionierende Software. @Hannes Lux (06.12.2007) Dank für einen sinnvollen, aber notwendigen Änderungshinweis. Nun: wo kann man nachlesen, welcher Befehl das Einlesen von CV's bewirkt und wie, da es sich bei DCC_Ansteuerung (noch) nicht um eine bidirektionale Leitung handel, wird das Einlesen bewerkstelligt. Vielen Dank für eine Antwort Jürgen
Jürgen Coellen wrote: > @Hannes Lux (06.12.2007) > Dank für einen sinnvollen, aber notwendigen Änderungshinweis. Das war kein Hinweis zur Änderung, sondern einfach eine (kommentierte) Analyse des Programms in Richtung Calibration des Oszillators. Ich habe einige Programme für Modellbau mit Tiny15 entwickelt, dort habe ich die Calibration allerdings anders gelöst. > > Nun: wo kann man nachlesen, welcher Befehl das Einlesen von CV's > bewirkt und wie, da es sich bei DCC_Ansteuerung (noch) nicht um eine > bidirektionale Leitung handel, wird das Einlesen bewerkstelligt. Es ist zwar schon etwas her, dass ich mir die DCC-Doku mal näher angesehen hatte, aber ich meine, dass das Zurücklesen der CVs im Basisbefehlssatz nicht vorgesehen ist. Das machen einige Hersteller vermutlich in dem Teil des Befehlssatzes, der für Erweiterungen vorgesehen ist. Als Rückkanal wird die Stromaufnahme der Lok gewertet, die vom Booster des Programmiergleises (z.B. an Intellibox) gemessen wird. Ich selbst halte die CV-Programmierung bei laufendem Betrieb übrigens für keine gute Idee. Es gibt regelmäßig Probleme mit digitalen Gartenbahnloks, deren Decoder (auf improvisierten Großanlagen bei Gartenbahn-Treffen) die PWM herkömmlicher Stromversorgungen mit aller Gewalt als DCC interpretieren wollen und ggf. sämtliche CVs verstellen. > > Vielen Dank für eine Antwort > > Jürgen Schau doch mal bei open-DCC vorbei, vielleicht erfährst Du da mehr. ...
Jürgen Coellen wrote: > wo kann man nachlesen, welcher Befehl das Einlesen von CV's > bewirkt und wie, da es sich bei DCC_Ansteuerung (noch) nicht um eine > bidirektionale Leitung handel, wird das Einlesen bewerkstelligt. Wo: Schau mal auf den entsprechenden Seiten der NMRA (http://www.nmra.org/standards/). Dort sind die Dokumente hinterlegt (leider nur in Englisch verfügbar!). Empfohlene Litaratur: "NMRA STANDARDS AND RECOMMENDED PRACTICES" Wie: Der Dekoder "Quittiert" entsprechende Anfragen mit einem kurzzeitigen (ca 6ms) Stromverbrauch von mindestens 60 mAn mA. Aber das steht auch genau in Recommended Practise 9.2.3. Solltest Du vorhaben selbst in die hardwarenahe Programmierung von DCC-Decodern einzusteigen, so wirst Du feststellen, daß die NMRA-Dokumente ein zwingendes MUSS darstellen. Ohne deren Verständnis: No Chance to get it working! Viel Spaß bei der Lektüre (muß man teilweise mehrmals lesen um es zu verstehen).
Hi, falls jemand nach kleinen Layouts für ATtiny's sucht (10x13mm), mal auf meiner Seite vorbeischauen: http://gzi.funpic.de - Eisenbahnmodellbau - DCC-Decoder (Eigenbau) Viele Gruesse Georg
Hi, würde der Encoder auch mit nem tiny13 laufen? Habe gerade keinen 15er hier. Wenn ja, was muss angepasst werden? 2. Frage: Ich suche eigentlich nen Encoder, der wie der Bremsgenerator von Lenz arbeitet. Der liest das Paket von der Zentrale ein, und ändert das Geschwindigkeitspaket. Somit bleiben die Funktionen erhalten. Wäre jemand in der Lage so etwas zu erstellen? Andi
Andreas Gräler wrote: > Hi, > würde der Encoder auch mit nem tiny13 laufen? Ein Vergleich der Datenblätter von Tiny13 und Tiny15 hätte Dir gezeigt, dass der Tiny13 keinen zweiten Timer hat. Ein Blick in den Programm-Quelltext hätte Dir dann verraten, dass das Programm beide Timer nutzt. > Habe gerade keinen 15er > hier. Das ist dann Pech für Dich. > Wenn ja, was muss angepasst werden? Du müsstest einen zweiten Timer in das Silizium meißeln oder die Motor-PWM in Software programmieren und die anderen Timer-abhängigen Dinge in die beiden Compares des Tiny13-Timers verlegen. Du müsstest also das Programm völlig neu schreiben und hättest nicht mal die Garantie, dass das überhaupt geht. > > 2. Frage: Ich suche eigentlich nen Encoder, der wie der Bremsgenerator > von Lenz arbeitet. Der liest das Paket von der Zentrale ein, und ändert > das Geschwindigkeitspaket. Somit bleiben die Funktionen erhalten. Wäre > jemand in der Lage so etwas zu erstellen? Könntest Du es bezahlen? (Nein, ich mache es nicht, auch nicht gegen Bezahlung...) Der Lenz-Bremser ist vermutlich billiger. Oder Du machst es selbst. Dann gibst Du der Gemeinschaft wenigstens etwas zurück. > > Andi ...
Hannes Lux wrote: > Oder Du machst > es selbst. Dann gibst Du der Gemeinschaft wenigstens etwas zurück. > Wenn Du mir sagst wie kein Problem. Ich habe von assembler und co. absolut keine Ahnung. Ich kann wohl nen PIC mit Parsic schreiben, aber mehr auch nicht. Andi
Andreas Gräler wrote: > Hannes Lux wrote: >> Oder Du machst >> es selbst. Dann gibst Du der Gemeinschaft wenigstens etwas zurück. >> > > Wenn Du mir sagst wie kein Problem. Mir fehlt leider die Zeit, Dir AVR-ASM beizubringen. Das müsstest Du (falls Du es wirklich willst) schon selbst erledigen. > Ich habe von assembler und co. > absolut keine Ahnung. Das lässt sich ändern. Ein Anfang wäre das Tutorial auf dieser Seite. Dann anderer Leute Quelltexte analysieren und verstehen. Dann eigene Probleme in einer Programmiersprache formulieren. ASM ist nr dann notwendig, wenn Du es mit einem kleinen leistungsschwachen Controller realisieren willst. Ansonsten gehen auch Hochsprachen. > Ich kann wohl nen PIC mit Parsic schreiben, aber > mehr auch nicht. Dann löse das Problem eben in PARSIC mittels PIC. > > Andi ...
@Hannes Ich hab schon öfters versucht einzusteigen. Doch irgendwie begreife ich einiges einfach nicht und habe auch oft nicht die Zeit dazu. Ich bin auch im Technikerstudium beim 8051 irgendwann nicht mehr mitgekommen. Ich habe schon oft überlegt ob man es mit Parsic hinbekommen würde. Aber ich wüßte nicht wie ich das hinbekommen soll. Kennst du das tool? Andi
Andreas Gräler wrote: > @Hannes > Ich hab schon öfters versucht einzusteigen. Doch irgendwie begreife ich > einiges einfach nicht und habe auch oft nicht die Zeit dazu. Ich bin > auch im Technikerstudium beim 8051 irgendwann nicht mehr mitgekommen. Nun, ich bin bloß (mehrfacher) Facharbeiter. Ich weiß, dass das Erlernen von AVR-Assembler nicht mal schnell von heute auf morgen geht. Da steckt viel Arbeit drin. > Ich habe schon oft überlegt ob man es mit Parsic hinbekommen würde. Dann müsstest Du PARSIC schon verdammt gut kennen. > Aber > ich wüßte nicht wie ich das hinbekommen soll. Ich auch nicht. Und mit PIC gleich gar nicht. > Kennst du das tool? Nein, ich weiß nur dass es das gibt und das man damit Funktionsbausteine zusammenschiebt, ähnlich FUP oder Siemens Logo. > > Andi ...
Änderungen vom 05.12.2008 am DCC-Lokdecoder von Maddax Warum eigentlich? Ausgangspunkt war die Entwicklung eines DCC-Einzelweichendecoders für Gartenbahn-Weichen auf der Basis des ATTiny13. Dazu brauchte ich eine provisorische DCC-Zentrale. Um diese zu entwickeln (sie läuft inzwischen mit Mega48, FET-H-Brücke, LCD 2x24, Drehgeber und 15 Tasten), brauchte ich neben Weichendecodern auch ein paar Lokdecoder, zwar nicht für den Einbau in Loks, sondern zum Demonstration zum Betrieb von Getriebemotoren (Kassenbonaufwickler von Pollin) und LEDs (Funktionen). Da ich bei www.mikrocontroller.net über diesen DCC-Decoder mit ATTiny15 von Maddax gestolpert bin, baute ich diesen nach. Er funktioniete aber nicht zufriedenstellend, da meinen Motoren die PWM-Frequenz zu hoch war. Also war ich gezwungen, Teile des Programms zu analysieren, was aufgrund Maddax' reichlicher und guter Kommentare ganz gut funktionierte. Ich habe dabei folgende Änderungen vorgenommen: 1. Änderung der PWM-Frequenz... Grund: Meinen Motoren war die PWM-Frequenz zu hoch. Ihnen fehlte das Drehmoment. Abhilfe: Anlegen der Konstante "fpwm" im Kopf des Quelltextes. Einstellen des Timer-Vorteilers in den Routinen "OUTZ:" und "REV:" anhand der Konstante "fpwm" anstatt unmittelbarer Binärzahlen. Fazit: Die PWM-Frequenz kann jetzt in 1zu2-Schritten im Kopf des Quelltextes eingestellt werden. 2. Änderung der Startwerte für CV#3 und CV#4... Grund: Da die Berechnung der Anfahr- und Brems-Rampen von der PWM-Frequenz abhängt, stimmen die Startwerte (CV#3 und CV#4) natürlich nicht mehr... Abhilfe: Ich lasse jetzt die Startwerte (CV#3 und CV#4) anhand "fpwm" vom Präprozessor des AVR-Studios berechnen (Konstante "cv3_4") und weise dem EEP den Wert nicht mehr unmittelbar durch Hex-Zahlen zu, sondern durch die Konstante "cv3_4". Fazit: Der Decoder erhält bei jeder sinnvollen PWM-Frequenz akzeptable Startwerte für Anfahren und Bremsen, was eine CV-Programmierung dieser Werte in vielen Fällen erübrigt. 3. Vordefinierte Konstanten für CV#1 und CV#6... Grund: Ich war einmal dabei, Konstanten für individuelle Werte im Kopf des Quelltextes anzulegen. Eingriff: Es wurden die Konstanten "adress" und "calibyte" angelegt, denen die DCC-Adresse und das individuelle Kalibrationsbyte des verwendeten ATTiny15 zugewiesen wird. Dem EEP werden diese Werte dann nicht mehr durch unmittelbare HEX-Zahlen zugewiesen, sondern durch die Konstanten. Fazit: Dies ermöglicht die Kalibration des Oszillators und Zuweisen der DCC-Adresse ohne Scrollen vom Kopf des Quelltextes aus und erspart die CV-Programmierung eines neuen Decoders. 4. Verbesserung der Fahrtrichtungsumschaltung... Grund: Mit Entsetzen stellte ich fest, dass beim zu schnellen Umschalten der Fahrtrichtung der Motor nicht stehen bleibt, sondern in der alten Fahrtrichtung weiter dreht. Mag sein, dass dieser Fehler unbemerkt blieb, weil der Decoder woanders hauptsächlich mit PC-Software als Zentrale betrieben wird und diese das Umsteuern verzögert. Abhilfe: In der Routine "SpeedCalc:" wurden zwei IF-Abfragen vertauscht, wodurch das CV-Reversierbit jetzt auch berücksichtigt wird, wenn die Fahrtrichtung nicht neu geschrieben wird. In der Routine "Speed28:" wurde eine Prüfung auf Fahrtrichtungsumkehr eingebaut, die zur Routine "STOP:" verzweigt, solange Soll- und Ist-Fahrtrichtung nicht übereinstimmen. Die neue Fahrtrichtung wird somit solange ignoriert, bis das Ist-Tempo 0 ist und dadurch die neue Soll-Fahrtrichtung in den Istwert übernommen wird. Fazit: Bei zu schneller Fahrtrichtungsumkehr bremst der Decoder die Lok bis zum Stillstand herunter und fährt sie dann langsam in der Gegenrichtung an. Diese Änderungen wurden von mir bisher nur im 14-Fahrstufen-Modus getestet. Die Änderungen wurden durch Kommentare gekennzeichnet. Die Rechte an diesem Programm bleiben selbstverständlich bei Maddax. ...
Hallo Leute, ich dachte nicht dass der alte Decoder noch bearbeitet wird, freut mich. Da war ich wohl doch nicht ganz auf dem Holzweg. Die Verbesserungen von Hannes Lux sind wohl sehr sinnvoll. Das Berechnen der Rampen dem Compiler zu überlassen ist sehr praktisch, das kannte ich in ASM so noch nicht. Das mit dem Copyright könnt Ihr natürlich inwischen vergessen. Feel Free to Modify ;)) mfg maddax
Hallo, @maddax und alle mitwirkende wäre gut, wenn hier oder unter einem neuen Beitrag das Projekt weiter betrieben würde. Ich bin sehr daran interessiert, um mein großer Fuhrpark umstellen zu können. Wichtig ist, das es auf dem DCC Protokoll basiert. Gruß Siegfried PS. Guten Rutsch ins neue Jahr.
Siegfried Saueressig wrote: > Hallo, > @maddax und alle mitwirkende > wäre gut, wenn hier oder unter einem neuen Beitrag das Projekt weiter > betrieben würde. Wird es doch, die letzte Änderung ist gerade mal drei Wochen her. > Ich bin sehr daran interessiert, um mein großer Fuhrpark umstellen zu > können. Mach doch, die momentane Version müsste mit allen üblichen Motoren zurecht kommen. Evtl. etwas mit der PWM-Frequenz spielen. Kannst ja bei der Gelegenheit auch mal die anderen Modi testen, mich hat nämlich nur der 14-Fahrstufen-Modus interessiert. > Wichtig ist, das es auf dem DCC Protokoll basiert. Ja sicher, was denn sonst? DCC ist nunmal der offene Standard. > Gruß Siegfried > PS. > Guten Rutsch ins neue Jahr. Dto, aber den Rutsch bitte nicht auf der Straße. ;-) ...
Hallo, Habe mich länger mit den Beiträgen befast. werde den ATtiny2313 oder ATmega8 einsetzen, um Reserve zu erhalten. Möchte noche eine Lastregelung und paar zusätzliche Funktionen(Ausgänge) einbauen. Habe aber trotzdem eine Frage. arbeitet der ATtiny2313 mit internem oder externem Quarz und ist 10MHz richtig? schönes Wochenende Gruß Siegfried
> arbeitet der ATtiny2313 mit internem jain... (sowohl intern als auch extern) > oder externem jain... (sowohl intern als auch extern) > Quarz jain... (internen Quarz gibt es nicht) > und ist 10MHz richtig? jain... (10MHz intern gibt es nicht) Es gibt folgende Möglichkeiten: - Der im Werkszustand ist intern mit 8MHz RC-Oszillator durch 8 geteilt, also 1MHz Taktfrequenz. - Interner Takt mit RC-Oszillator mit einem durch 2 teilbaren Bruchteil von 8MHz nach Verändern der CKDIV8-Fuse. - Interner Quarzgenerator mit einem externem Quarz mit einer Frequenz Deiner Wahl nach Verändern der CKSELx- und CKDIV8-Fuses. - etliche andere Möglichkeiten, wie externer Takt, externer RC-Oszillator oder externer Keramik-Resonator... Das beste ist, Du schaust einfach mal in das Datenblatt des ATtiny2313, da stehen alle Möglichkeiten drin. Es wäre auch schön, wenn Du den Quellcode Deines Programms hier veröffentlichst, wenn es fertig ist, dann haben Alle was davon. Viel Erfolg... ...
Hallo guten morgen, Muß den Mega8 einsetzen, da für die Lastregelung einen AD Eingang benötigt wird. Werde eine externen Quarz mit 10 MHz einsetzen. dieses "Es wäre auch schön, wenn Du den Quellcode Deines Programms hier veröffentlichst, wenn es fertig ist, dann haben Alle was davon." geht in Ordnung. Benötige aber noch einige Zeit, um darüber zu berichten. Gruß Siegfried
Hallo, Eure Beiträge sind höchst interessant,ich fange gerade erst mit Modellbau an und habe ein paar fragen. Befehle werden von der Zentrale gesendet. Gibt es Systeme die auch von der Lok zur Zentrale senden können??
Hier habe ich was gesehen, was über WLAN gehen soll: Beitrag "Sound für meine Modelleisenbahn selber bauen ?" ...
Hallo, gibt es inzwischen auch schon als Norm. siehe mal hier:[[http://www.opendcc.org/info/railcom/railcom.html]] Gruß Willi
Danke für die Anregungen Man braucht es also nicht neu erfinden. Railcom ist aber verdammt kompliziert,ebenso Wlan Ich denke an einfachere Möglichkeiten 1.IR-Verbindungen reichweite Ca.10m reflektiert durch weiße Zimmerdecke kenn ich vom ASURO-Robot 2.RFM12 Funkmodule 3.Spannungsversorgung über Induktivität 24V. RS232-Impulse Senden +5V(29V),Empfangen -5V(19V)
Gerti wrote:
...
> Railcom ist aber verdammt kompliziert,ebenso Wlan
Nee ! WLAN ist eben gar nicht kompliziert:
Man steuert die WLAN Module vom Controller im Handheld und in der Lok,
wobei die Schnittstelle für die Daten selbst eine RS232 sein kann!
Die Module sorgen dafür, dass die Übertragung gesichert abläuft
(Stichwort Transparente Datenübertragungsschicht) - man braucht sich
also um OSI-Schicht 1 - 3 nicht zu kümmern, lediglich in den Telegrammen
IP-Adresse mit geben, die einer Lok zugeordnet sind ... etc.
Und man hat 5 Mbit/s in beiden Richtungen. Da kann man sogar
Fernsehbilder aus dem Lokführerstand ruckelfrei auf eine Leinwand
(Notebook) aus der Lok übertragen. Anwendungen ohne Grenzen!
Kompliziert ist eben Railcom, da hier erst einmal der semiduplexe Kanal
(durch Slots und Master Slave Betrieb)geschaffen werden muss, was
zusätzlich dadurch erschwert wird, dass die Signale auf die
Spannungsversorgung im Gleis über 500 Euro teure Booster aufmoduliert
werden müssen ...! Das ist doch veraltete Technologie - von hinten durch
die Brust. Wer schleust denn im Haus seine Daten über das Stromnetz wenn
er WLAN mit 300Mbit/s kaufen kann ... und damit im Haus für eine
entsprechende Funkabdeckung sorgt? Die Steckdose nimmt doch nur seine
Mobilität.
DCC über die Schiene gibt es doch nur noch, weil die Hersteller ihre
langwierige komplexe Eigenentwicklung schützen wollen - verheerend wenn
der erste weg von DCC auf WLAN umsteigt. Dann brechen die Dämme ...!
Programmieren am Gleis - was so manche als die hohe Schule in DCC
darstellen - ist doch bei Benutzung eines WLAN lächerlich einfach. Es
geht sogar Programmieren während der Fahrt ....(Hihi)
Grüsse
Fortsetzung: Und was noch viel besser geht: Die permanente Rückmeldung, wo sich die Lok gerade im Gleis befindet: Billige RFIDs unter der gesamten Anlage unter die Schwelle legen und ein RFID Scanner in die Lok ... und schon meldet die Lok über das WLAN permanent zurück, wo sie gerade ist. "Gleisbesetztmeldung" ist ein Wort das ins Archiv wandert ...! Have Fun!
Hallo John, Programmieren während der Fahrt, geht auch problemlos mit DCC. Nennt sich POM. Aber erzähl mal etwas zu Deiner WLAN Geschichte! Wie groß wird das? Was kostet das? Gruß Willi
Hallo, wie wäre es denn mit bluetooth bzw. zigbee? Sind recht kleine und günstige Module. Gibt es auch schon fertig für rs232. Andi
Willi wrote: > Hallo John, > > Programmieren während der Fahrt, geht auch problemlos mit DCC. Nennt > sich POM. > Aber erzähl mal etwas zu Deiner WLAN Geschichte! Wie groß wird das? Was > kostet das? > Gruß Willi Ich nehme Avisaro WLAN Module. Sind leider recht teuer. Man bekommt aber auch Module für 60 Euro pro Einzelstück aus China. Was meinst Du mit Wie groß wird das ?
> Was meinst Du mit Wie groß wird das ?
Er meint vermutlich, ob es in einer dreiachsigen Dampflok der Spurweite
TT oder H0 Platz findet.
...
Hannes Lux wrote: >> Was meinst Du mit Wie groß wird das ? > > Er meint vermutlich, ob es in einer dreiachsigen Dampflok der Spurweite > TT oder H0 Platz findet. > > ... Ich bastele momentan für IIm (LGB). Avisaro Module Abmessungen sind bekannt - passen eher nicht in kleinere Spurweiten. Der Rest dürfte in SMD Technologie verkleinert reinpassen. Verkleinerung auf H0 oder TT ist bei mir momentan kein Focus - LGB bietet mir reichlich Platz - sorry.
John Schmitz wrote: > Kompliziert ist eben Railcom, da hier erst einmal der semiduplexe Kanal > (durch Slots und Master Slave Betrieb)geschaffen werden muss, was > zusätzlich dadurch erschwert wird, dass die Signale auf die > Spannungsversorgung im Gleis über 500 Euro teure Booster aufmoduliert > werden müssen ...! Wirklich?? http://www.opendcc.org/elektronik/booster2/booster2.html http://www.opendcc.org/elektronik/xpressnet/railcom_xpressnet.html http://www.lenz.com/techinfo/index.htm
Zum WLAN und der Größe eines WLAN-Chips: http://www.sphinxcomputer.de/produktdb/documents/339_2404.pdf Der Kasten ist 33,9 x 32,5 x 10,5 mm³ groß...
das erinnert mich so an die diskreten Digitalanfänge, da hatte jede Lok ihren Packwagen mit dem Dekoder.
http://www.lenz.com/techinfo/index.htm Na klar geht das prinzipiell - aber mit welchem Aufwand, welchem Preis und welcher Bandbreite ....! Nevertheless - ich bleibe dabei, die H0er interssieren mich ja gar nicht, bei mir passt immer alles in die Lok! Ne LGB Lok zieht unter Last oder am Berg 2 - 3 A, bei 5 Loks auf der Anlage muss man die Booster schon wieder erweitern ... usw. Wenn man die bidirektionale Kommunikation über Funk (z.B. über WLAN) abwickelt, kann man einen 30A DC Trafo (mit Sicherungen im Anschluss) ans Gleis legen ... - und gut ist! Pro Lok kostet der Controller (AVR Mega 256) mit H-Brücke und ca. 16-24 Ausgängen und Endstufen zum Schalten von Licht, Kupplung, etc. ca. 50 Euro. Einzig der Funk kostet ca. 100 Euro (noch!). Pro Lok also momentan geschätzt 150 Euro. Dafür habe ich aber nun 5 Mbit/s Bandbreite, beliebige Adressierbarkeit, keine blödsinnige Fx Programmierung mehr usw. Dazu kommt entweder ein kommerzielles Sound Modul (SUSI Schnittstelle ?) oder ein selbstgebautes (mit eigenem Sound aufgespielt) an den Controller (ca. 20 Euro). Sound holt man sich aus den unzähligen YouTube Videos in allerbester Qualität ...! Kann man mit Audacity wunderbar mixen. Have Fun
StarterSet! http://cgi.ebay.de/Massoth-Dimax-Digital-Funk-Set-12-Ampere-fuer-LGB_W0QQitemZ290291494085QQihZ019QQcategoryZ80983QQssPageNameZWDVWQQrdZ1QQcmdZViewItem Und dann kommen noch die Decoder dazu ... und will man 10 Loks auf der Anlage fahren wird 2ter Booster für 500 Euro fällig usw. ...! Das will ich nicht zahlen! Have Fun
Und was hat das alles mit Maddax' Tiny15-Lokdecoder (dem Betreff dieses Threads) zu tun? ...
Hallo Hannes, du hast völlig recht ! hier ist dann etwas womit dieser thrad auch zu tun hat. Kurz zu mir , bin Modelleisenbahner und realisiere gerade mein erstes Digitaljahr in diesem Bereich. Ich habe versucht einen günstigen Decoder zu entwickeln der sich ich in die Wagon´s zwecks Steuerung der Beleuchtung einsetzten lässt, deswegen bin ich hier gelandet und auf Euer Projekt gestoßen. Denn Digitalspannung mit Licht zu verbrauchen ist doch etwas verschwenderisch. :-)) Da ich noch nie mit Assembler zu tun hatte, habe ich mich etwas schwer getan den Code zu verstehen. Deshalb habe ich alles ein wenig ausformuliert. 1. Nach den ersten Versuchen hatte ich Erfolglos ausprobiert, den Decoder die 4 Stelligen Adressen beizubringen. Das ist beseitigt und Funktioniert soweit. 2. Wollte ich die Funktionen F1 bis F4 benutzen. Licht ein , event. Sound etc.. Das hatte ich dann auch schnell realisiert aber die Steuerwagengeschichte war noch offen. 3. Wollte ich aber noch eine Fahrtrichtungsabhänige Steuerwagenbeleuchtung. Auch das konnte ich dank Eurem Code realisieren. Alles einstellbar in CV 28 ( der ist von Mir Angelegt worden ) Wird CV 28 mit einer 2 in Dezimal gefüttert läuft er im Steuerwagenmodus ist es eine 4 dann sind die F1 bis F4 Tasten angewählt. Ich habe den Decoder mit der Intellibox getestet und hier funktioniert alles einwandfrei. Ach ja, die Programierungsquittung zur Zentrale, habe ich mit einem R von 180 Ohm zum Gleis ( ca 60 bis 80 mA ) Stromaufnahme realisiert. Im moment ist er per Jumper codiert so das man auch einen Schalter etc... unter den Wagen anbringen kann. Könnte mir auch vorstellen das ich einen Port dafür zu opfern. Na ja letztendlich bin ich Euch dankbar, das Ihr soviel Arbeit in dieses Projekt gesteckt habt, und ich so zu meinen günstigen Funktionsdecoder gekommen bin. Eine Platine habe ich noch nicht fertiggestellt, aber wenn Ihr wollt kann ich diese irgendwann als eagle file bereitstellen. Den Code habe ich zwecks Weitergabe an andere User mit angehängt ( TXT ). Danke an alle Beteiligten und Modellbahner Gruß Muetze
Hallo Muetze, genau dafür ist das Forum ja da, warum immer alles neu erfinden. Für Deine Wagenbeleuchtung kannst Du noch eine Menge aus Deinem Code rausnehmen. Hier mal eine Zubehördekoder Version Von mir, auch noch mit dem T15 und drei PWM gedimmte Ausgänge. Das läßt sich auch leicht wieder über eine Lokadresse steuern/programmieren [[http://www.toralfwilhelm.de/Bilder/T15Licht.asm]]. Ansonsten bin ich gerade beim Umsteigen auf Tiny25 bzw Tiny24. Preislich nimmt sich das nichts mehr und man hat Reserven im Programmspeicher. Ich hänge euch mal einen Codeschnippsel mit einer abgeänderten DCC Empfangsschleife ran. Der läuft nur noch über einen Timerinterrupt der alle 10us das DCC Signal abtastet, das geht bei fahrenden Dekodern mit Rad/Schiene Kontackt erheblich besser als die Int0/Timer Kombination. Der Code stammt aus meinem Lastgeregelten Tiny24 Dekoder, der macht gerade Fortschritte. allen ein nettes WE Willi
Hallo guten morgen, Im Anhang habe ich den Schaltplan für meine Decoder Version. Nutze einen "ATMEL AVR ATmega 8-16AU im TQFP 32 Gehäuse". Folgende Optionen möchte ich haben. Motor Treiber bis 1000 mA 2 Funktion Ausgänge für Lichtwechsel 4 Funktion Ausgänge für ??? Lastreglung Kurzschluß/Uberlast Schutz RailCom Unterstützung Sollte sich ein Fehler eingeschlichen haben, so last es mich wissen. Am Layout in ich noch am arbeiten. Größe etwa 27 x 17 mm Gruß Siegfried
> Folgende Optionen möchte ich haben. > Motor Treiber bis 1000 mA > 2 Funktion Ausgänge für Lichtwechsel > 4 Funktion Ausgänge für ??? > Lastreglung > Kurzschluß/Uberlast Schutz > RailCom Unterstützung Du willst also gleich klotzen und nicht kleckern... ;-) Hoffentlich übernimmst Du Dich dabei nicht. > Sollte sich ein Fehler eingeschlichen haben, so last es mich wissen. Eventuelle Fehler sind aufgrund der Auflösung und des Formates Deines Schaltplanes nicht erkennbar, da die Beschriftung der Leitungen nicht lesbar ist. ...
Hallo guten morgen, habe mal den Schaltplan (Eagle Version 3.55) hinzugefügt. Gruß Siegfried
Hallo Siegfried, kann mich Hannes nur anschließen, die Schaltungsdetails findet mann alle im Netz. Die Software ist ein anderes Thema und da hast Du Dir richtig etwas vorgenommen! Das passt dann auch nicht mehr hier in diesen Fred. (Tiny15 DCC Dekoder) Da ich momentan an einem ähnlichem Projekt arbeite, wobei ich eher Tiny24/25 anpeile (die Entwicklung läuft zufällig auf meinem mega8 Testaufbau) kannst Du Dir ja einmal den Code ansehen. Da fehlt aber noch einiges, bzw. ist noch nicht mit eingebunden. Gruß Willi
@SS: Hast Du die Schaltung selbst entwickelt oder von einer Vorlage abgezeichnet? Da mir nicht angeschlossene Dioden aufgefallen waren, habe ich mal den ERC-Check gemacht. Eagle meint dazu:
1 | EAGLE Version 4.13 Copyright (c) 1988-2004 CadSoft |
2 | |
3 | Electrical Rule Check für E:/AVR/FORUM/DCC/Saueressig_1044009_DccDecoder_RailCom_ATmega8.sch am 23.02.2009 11:16:17 |
4 | |
5 | WARNUNG: Seite 1/2: Nicht angeschlossener Pin: D6 - |
6 | WARNUNG: Seite 1/2: Nicht angeschlossener Pin: D6 + |
7 | WARNUNG: Seite 1/2: Nicht angeschlossener Pin: D7 - |
8 | WARNUNG: Seite 1/2: Nicht angeschlossener Pin: D7 + |
9 | WARNUNG: Seite 1/2: Nicht angeschlossener Pin: BR2 2 |
10 | WARNUNG: Seite 1/2: Nicht angeschlossener Pin: BR2 1 |
11 | WARNUNG: Seite 1/2: SUPPLY-Pin VCC überschrieben mit N$15 |
12 | FEHLER: Seite 1/2: SUPPLY-Pin VCC mit mehr als einem Signal (VCC, N$15) überschrieben |
13 | WARNUNG: Nur 1 Pin an Netz SU_CLK |
14 | WARNUNG: Nur 1 Pin an Netz SU_DATA |
15 | |
16 | Kein Board geladen - Die Konsistenz ist nicht überprüft |
17 | |
18 | 1 Fehler |
19 | 9 Warnungen |
Den Rest habe ich nicht weiter überprüft, das hat auch damit zu tun, dass ich den Ansatz nicht kenne, also die Hintergründe der Pinzuordnung. Müsste ich das Ding entwerfen, würde ich den Mega88 einsetzen, der hat auf Timer0 2 weitere PWMs, die sich hervorragend für die Motorbrücke nutzen lassen. Wäre ich gehässig, würde ich jetzt fragen, warum Du keinen Mega2560 oder 2561 einsetzt und gleich noch den Sound implementierst. Aber so gehässig bin ich nicht, daher stelle ich diese Frage nicht... ;-) @Willi: Wenn ich darf, schau ich da auch mal rein, nur so interessenhalber. ...
Hallo, Habe die Schaltung selbst entworfen. Einige Informationen habe ich aus dem Internet. Im Schaltplan sind zur Zeit einige Bauteile noch nicht angeschlossen. Diese hat mit dem entwerfen des Layout zu tun. Layout ist zu 70% fertig. Gruß Siegfried
@Hannes: das mit dem Riesen AVR (in Bezug auf Programmspeicher)und dann 1bit PWM Sound hab ich wirklich schon einmal überlegt. Meine S-Bahn Bimmel im Tiny2313 hört sich mächtig blechern an. Gruß Willi
@Willi: Die Bimmel der Schrankensteuerung braucht 2636 Bytes (für den Sound), wird vom Mega8 (8MHz intern) mit 8kHz Samplerate über die 8-Bit-PWM des Timer2 (31,5kHz PWM-Frequenz) ausgegeben und klingt halbwegs erträglich (die Highspeed-PWM (über PLL) eines Tiny85 klingt natürlich bedeutend besser). Die Schrankensteuerung ist aber bisher noch ohne DCC-Routinen. Irgendwann werde ich da aber noch die DCC-Routine meiner Tiny13-Einzelweichendecoder einbauen. Oder auch nicht... ;-) Ist zwar alles OT, aber seit der WLAN-Geschichte ist der Thread sowiso im Eimer. ...
> Habe die Schaltung selbst entworfen.
Hm, warum sieht das dem LD-G-33 so verdammt ähnlich. Kleiner Tipp: ich
würde 2 Pins der Brücke auf PWM-Ausgänge vom Atmel hängen.
Hans
Hallo, Eine Schaltung kann immer ähnlich aussehen. Fangen wir mal bei der Gleichrichtung einer Spannung an. 4 Dioden als Brücke, danach ein Elko und einen Keko. Natürlich habe ich mich auch umgesehen. Es bleibt noch die Frage, wer von wem. Beispiel: Railcom Display Leider kommt der Tipp zu spät. Leiterplatten sind gefertigt. Gruß Siegfried
Bonjour! Wie ich sehe hatte da jemand einen ähnlichen Gedanken wie ich. Ich habe einen Lokdecoder entwickelt mit dem ich meine LGB loks steuern kann. Das ganze ist noch höchst experimentell, aber meine Fortschritte lassen sich hier beobachten: http://www.das-labor.org/wiki/Locodoco Ich habe mich für die Funk-Variante entschieden, da diese den großen Vorteil von Rückmeldungen bietet. Sobald die Lokdecoder Software mal richtig funktioniert werde ich an der Positionsbestimmung und Weichensteuerung arbeiten. Derzeit kann ich die Loks steuern und die Firmware via Funk neu flashen ;)
Hallo, hat jemand die Routine auch so, dass es nur in ein Register geschrieben wird? Um dann die Funktionen selber zuordnen zu können? Dank Fred
And btw u rock:) ur projects and works are cool. and ur website is really informative. learnt a lot from it:) keep up the good work! cheers!:) -Ukesh
Hello everyone. My name is Jonathan, currently based in belgium, I am both English and French native language, just wanted to say hello and Looking forward to sharing information with all of you:-)
Hi, hat irgendwer einen Sourcecode für den Attiny15 Decoder ohne Motorsteuerung mit vier einfachen Ausgängen oder kann mir sagen wie ich den Code ändern muss umm nur vier einfache Ausgänge zu erhalten? Gruß borsti87
Hi Borsti87, schau mal auf meiner Heimseite unter -> Eisenbahnmodellbau -> Funktionsdec. ATtiny44/45 -> Heikos Quellcode ob Du damit was anfangen kannst. Oder meinen Code für einen ATtiny15 Lokdecoder abändern, die Auswertung fuer F1-F8 steht in ftion und ftion1 (Sprungadresse f1f8: wird nicht benutzt) sbi PORTB,2 ;setzt den Ausgangspin cbi PORTB,2 ;loescht den Ausgangspin Viel Spass, Georg
Hi Georg, da ich noch nicht so lange beim AVR-Programmieren bin Proge ich momentan im Assembler. Ich habe mir deshalb mal den Quellcode von deinen Lokdecodern auf Basis des Attiny15 kopiert und versucht mit dem AVR-Studio 4.18 zu assemblieren doch schon im unveränderten zustand bekomme ich 10 Fehler??? Gruß borsti87
Hi Borsti87, stell mal beim AVR-Studio bei den Assembler Options AVR Assembler auf Version 1. Na ja, ist schon eine Weile her als ich den Code geschrieben habe... Viel Spass, Georg
Hi, Immer noch ein Fehler "Include file 'avr_asm\tn15def.inc' not found" wenn ich es auf 'tn15def.inc' ändere findet er zwar das Include file wirft mir aber 8 fehler aus.
Sebastian G. schrieb: > Hi, > Immer noch ein Fehler "Include file 'avr_asm\tn15def.inc' not found" > wenn ich es auf 'tn15def.inc' ändere findet er zwar das Include file > wirft mir aber 8 fehler aus. Dann sorge doch einfach dafür, dass für die Include-Datei ein gültiger Path angegeben wird. Georg hat nunmal seine Ordner anders organisiert als Du. ...
WIE GESAGT: Sebastian G. schrieb: > wenn ich es auf 'tn15def.inc' ändere findet er zwar das Include file > wirft mir aber 8 fehler aus.
Sebastian G. schrieb: > WIE GESAGT: > Sebastian G. schrieb: >> wenn ich es auf 'tn15def.inc' ändere findet er zwar das Include file >> wirft mir aber 8 fehler aus. Dann analysiere doch einfach mal die Fehler. Mache einen Doppelklick auf jede Fehlerzeile in der Fehlerliste und schon springt der Cursor in die Programmzeile mit dem Fehler. Nun noch die Fehlermeldung lesen (und übersetzen), dann den Fehler in der markierten Quelltextzeile einkreisen. Der kausale Zusammenhang zwischen Fehlermeldung und markiertem Quelltext erlaubt nämlich sehr exaktes Einkreisen der Fehler. Dabei aber immer mit der ersten Fehlermeldung beginnen, oftmals sind die Folgefehler nämlich nur Irrtümer und resultieren aus dem ersten Fehler. ...
Hi, mein Fehler, als ich den Decoder geschrieben habe, habe ich immer zwischen ATtiny15 und AT90S4433 hin und her geschaltet und dann die Include Dateien angepasst um nicht immer wieder Änderungen im Source vornehmen zu müssen. Es gibt zwei Unterschiede zwischen den beiden Prozessoren: die Definition des Timers (4433=OCR1L) und der Hardwarestack (4433 hat keinen). Ich habe die Includes mit dem Zusatz _mod versehen und die Sourcen angepasst, das Datum der Erstellung habe ich nicht geändert da ich am Source nichts geändert habe. http://g-zi.de/Decoder/ATtiny15/2pin.asm http://g-zi.de/Decoder/ATtiny15/tn15def_mod.inc http://g-zi.de/Decoder/AT90S4433/3pin4433.asm http://g-zi.de/Decoder/AT90S4433/4433def_mod.inc Viel Spass, Georg
Ich hatte beim FREMO Treffen 2002 in der Uni Twente in Enschede einen Vortrag über Decoderbau gehalten. Da beschreibe ich u.A. das Decodieren des NMRA-DCC Signals anhand eines PIC12CE519. Der Vortrag ist zu finden unter: http://g-zi.de/Decoder/Presentation_DCC-Decoder/img0.html Viel Spass, Georg
Hi, ich würde gerne den Code von Muetze nutzen und dort alles rauswerfen wollen was die Funktionsarten Steuerwagendecoder und Motordecoder angeht. Gruß Sebastian
Sebastian G. schrieb: > Hi, > > ich würde gerne den Code von Muetze nutzen und dort alles rauswerfen > wollen was die Funktionsarten Steuerwagendecoder und Motordecoder > angeht. > > Gruß > Sebastian kann mir wer dabei helfen ich bekomms irgendwie nicht zum Laufen
@ Sebastian G. Hallo Sebastian, ich habe die ursprüngliche Version des von mir geänderten Codes überdacht und ein Multifunktionsdecoder daraus entwicklet. Er beinhaltet folgende Funktionen, mit CV Anwählbar: Steuerwagen , Wagonbeleuchtung F1 bis F4 , Hausbeleuchtung inkl. Reklame blinken , Baustellen oder Bahnübergangsblinken , Blaulicht , Warnlicht , Blinker , Fernlicht für PKw´s und vieles mehr. Es ist sozusagen jetzt ein vielseitiger Funktionsdecoder geworden. Ich habe alles Dokumentiert damit man meine Gedankengänge gut nachvollziehen kann. Der Decoder behherscht die 4 Stellige Adressierung und ist von mir mehr als 100 x nachgebaut und getestet worden. Auf dem Programiergleis quittiert er mit einem F1 und F2 blinken , was die Zentrale nicht mitbekommt da die 60mA für die Rückmeldung an die Zentrale nicht erreicht werden. Ein zuschaltbarer Widerstand auf den F1 Ausgang behebt das Problem, oder man giebt sich mit der optischen Rückmeldung zufrieden. Die Steuerwagenfunktion kannst du ja abschalten. Ich hoffe der Code gefällt Dir und Deine Frage ist somit beantwortet. Gruß und viel Spass beim Nachbau
@ Sebastian G hier noch das Eagle file und die AWS Datei, sowie ein 3D Bild der Platine für die SMD Version ( Bauteilekoste so ca. €3,- pro Decoder). Kenntnisse im Platine Ätzen und löten sollten schon vorhanden sein. Die Platine kann mit einer Externen Stromversorgung versorgt werden,so dass man im Stationärbetrieb nicht so viel Digitalspannung verbrät. Viel Spass beim nach oder Umbau Gruß Muetze
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.