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
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
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
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..
> 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
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
...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
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
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
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
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
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
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
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
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
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??
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
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 ?
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.
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
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 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
;)
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.
...
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.
...
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
Hallo Sebastian,
Ich habe das Eagle File noch mal überarbeitet und eine
Version entwickelt die nur mit dem DCC Signal auskommt oder
die man Stationär mit Spannung versorgt und das DCC Signal
( nur das Plus ) zum ansteuern nimmt.
Bei Einbau in Loks oder Wagons mus das DCC Signal auf die
mit < 20 ~ Bezeichneten Pole gelegt werden.
Ansonsten den auf dem Bild mit R1 bezeichneten 220K Widerstand auf R2
löten, dann das DCC Kabel auf den mit " DCC bei Ext. V " bezeichneten
PAD löten. Den Gleichrichter an den mit " < 20 ~ " Bezeichneten Polen an
einen Trafo anschließen. So wird Digitalspannung gespart.
Ich habe bei meinen Wagons bis zu 15 LED´s eingebaut,
da hat die Schaltung so um die 7,4 mA verbraucht.
Die Ausgänge habe ich noch mal Bezeichnet mit F1 bis F4
dann ist es Leichter bei dem Anlöten die richtigen PAD´s zuzuordnen.
Der Plus von den LED´s kommt auf den gemeinsamen Pol der mit " VCC "
gekennzeichnet ist, der Minus wird jeweils geschaltet PAD F1 bis F4.
Die Wiederstände sind so berechnet das LED´s dort direkt angeschlossen
werden können ( paralell )möchte man mit Glühbirnchen arbeiten muss
der Wiederstand verringert werden, in der vorhandenen Schaltung beträgt
er 1,5K.
So jetzt hast Du alles auf dem neusten Stand.
Weiter bin ich noch nicht gekommen.
Gruß Muetze
Hallo,
ich bin auf der Suche nach einem Funktionsdecoder mit folgenden
Eigenschaften:
- Kurze und Lange Adresse (CV1, CV17/18)
- Functionmapping, also die F-Tasten beliebig den Ausgängen zuordnen
- fahrtrichtungsabhängig (FL/FR)
- Dimmen der Ausgänge
- Leuchtstoffröhren Effekt bei F1-Fx konfigurierbar
- ggf. auch Analogbetrieb
Erfüllt das evtl. schon einer oder hat so einen jemand in Arbeit?
Andi
Hallo,
Entschuldigung das ich den alten Beitrag wieder rauskrame.
Ich möchte gern das Programm von Muetze mit Tiny15 zu Versuchszwecken
auf einen ATmega32 spielen.
Ich habe dazu die Timer und das Programm geändert, so das ich in der
Ausgabe keine Fehler erhalte. Lediglich 4 Warnungen bezüglich der
Verwendung der Register ab R26 bis R29.
Ich vermute das es ein Problem mit dem Takt des µC gibt. Der Tiny15 hat
ja 1,6MHZ internen Takt welcher im Programm für die Timer verwendet
wird.
Wie passe ich dies am Besten an für ATMega32 oder gibt es ein generelles
Problem bei der Verwendung eines ATM32.
Vielen Dank
MFG
Robert
Hi,
erst mal ein Frohes neues Jahr 2011 ;-)
so ich wollte mal horchen ob sich hier schon einer einen Kopf darum
gemacht hat das der Tiny15 jetzt vom Tiny25 quasi abgelöst wurde.
Welchen Tiny25 sollte man nehmen den mit 10MHz oder mit 20MHz?
Und hat sich schon wer daran gemacht das Programm anzupassen?
MfG
Sebastian
Sebastian G. schrieb:> Hi,>> erst mal ein Frohes neues Jahr 2011 ;-)
Jou, Frohes und Gesundes...
> so ich wollte mal horchen ob sich hier schon einer einen Kopf darum> gemacht hat das der Tiny15 jetzt vom Tiny25 quasi abgelöst wurde.> Welchen Tiny25 sollte man nehmen den mit 10MHz oder mit 20MHz?
Ist diese Frage Dein Ernst?
Welche Taktfrequenzen kann der Tiny25 ohne externen Taktgeber?
Welche Rolle spielt es dann, ob der Tiny25 10 oder 20 MHz Takt verträgt?
> Und hat sich schon wer daran gemacht das Programm anzupassen?
Nicht schwätzen, sondern machen.
>> MfG> Sebastian
...
Hallo,
ich bin über einen 5V Regler im SOT-23 Gehäuse gestolpert. Damit lassen
sich evtl. noch ein paar mm^2 einsparen:
TA 78L 05F TOSHIBA (z.B. €0.53 bei C... )
Noch hab' ich den Thread nicht durchgeackert. Wird für die
Signalübertragung die Versorgungsspannung umgepolt oder kurz
ausgeschaltet?
Her(t)zliche Grüße
Harald
Hi,
ich habe jetzt mal Mützes Multifunktiondecoder Programm versucht etwas
um zubauen. Und zwar will ich das beim schreiben der CV 8 diese zwar
weiterhin beibehalten wird aber alle CV's in den 'Auslieferungszustand'
zurückgesetzt werden. Dazu habe ich folgendes geändert:
cp ByteB, TEMP1 ; vergleiche ByteB und TEMP1 ob gleich / auf Schreib-Adresse CV Hersteller ID
30
breq CVRESET ; wenn ByteB und TEMP1 gleich , dann springe zu CVRESET / CV in Auslieferungszustand wenn gleich ;PRGACK ; wenn ByteB und TEMP1 gleich , dann springe zu PRGACK / beende Schreiben wenn gleich
out TIFR, TEMP1 ; Lade Abbild von TEMP1 nach Timer Counter InterruptFlag
106
clr TEMP1 ; lösche TEMP1
107
out PortB, TEMP1 ; lade Abbild von TEMP1 nach PortB / lösche Motorausgang
108
sei ; alle Interrupts wieder einschalten / auf 1
109
rjmp MAIN ; springe zu Main / Endlosschleife
Neu ist dabei Hauptsächlich das Label CVRESET und der zugehörige Aufruf
im Label PRGWRITE.
Mein Problem ist nur, dass nach dem CVRESET kein Acknowledge erzeugt
wird und ich nicht genau weis warum.
Ein anderes Problem ist noch das ich beim lesen der CV's ebenfalls kein
Acknowledge bekomme.
Kann mir da wer weiter Helfen?
MfG
Sebastian
@Mütze
Kannst du mir bitte sagen was ich tun muss damit ich den
Reversierbetrieb wieder ins Programm bekomme, um im Steuerwagenbetrieb
die beiden Ausgänge für FL zu tauschen?
Und ob es eine einfache Möglichkeit gibt das Neonflackern nicht nur beim
ersten Start des Dekoder bei schon betätigte Funktion gibt, sondern auch
beim einschalten der jeweiligen Funktion im laufnden Betrieb?
Gruß
Sebastian
Sebastian G. schrieb:> @Mütze>> Kannst du mir bitte sagen was ich tun muss damit ich den> Reversierbetrieb wieder ins Programm bekomme, um im Steuerwagenbetrieb> die beiden Ausgänge für FL zu tauschen?
so das habe ich schon wie folgt gelöst:
Die Auskommentierung hier bei den letzten beiden Code-Zeilen enfernt
1
RESET:
2
3
[...]
4
5
ldi TEMP1, EELongADR ; Lade EELongADR in TEMP1 / Lange Adresse
6
rcall readEEProm ; Springe zu readEEprom
7
bst Temp2, 5 ; Lade aus TEMP2 BIT 5 / Lange Adresse ( CV29 )
8
bld DCCReg, LongADR ; schreibe T-Bit in DCCReg, LongADR ( BIT 7 )
9
bst Temp2, 0 ; Lade aus TEMP2 BIT 0 für Reversierbetrieb ( CV29 )
10
bld DCCReg, RevDir ; schreibe T-Bit in DCCReg, RevDir ( BIT 6 )
11
12
[...]
und das Label Steuerw um die Überprüfung des DCCReg auf Reversierbetrieb
wie folgt ergänzt
1
Steuerw:
2
3
cbr Temp1,0b00000011
4
sbrc stop,7 ; wenn das Bit 6 auf 1 ist
5
rjmp pc+16 ; springe im Programm Counter 15 vor
6
sbrs DCCReg,FL ; Wenn Fahrtlicht Bit = 1 dann
7
rjmp PC+14 ; springe im Programm Counter 13 vor
8
sbrs stop,6 ; wenn das Bit 6 im Sopregister auf Null steht
9
rjmp pc+12 ; springe im Programm Counter 13 vor
10
sbrc DCCReg,DIR ; Wenn Fahrtrichtung Bit Rückwärts 1 dann
;********* FL Aus ****************************************************************************
24
ret ; springe zu Main / Endlosschleife
So nun habe ich aber noch fesgestellt das der Betrieb mit langer Adresse
noch nicht so richtig funktioniert, werd mir das noch mal anschauen, bin
aber auch hier weiterhin für Hilfe dankbar ;-)
MfG
Sebastian
Sebastian G. schrieb:> So nun habe ich aber noch fesgestellt das der Betrieb mit langer Adresse> noch nicht so richtig funktioniert, werd mir das noch mal anschauen, bin> aber auch hier weiterhin für Hilfe dankbar ;-)
Das Problem lag wohl nicht am Programm als mehr an meinem duseligen
Twin-Center das es nicht gebacken bekommt ordentlich lange Adressen zu
Programmieren.
Gruß
Sebastian
Hallo
Sebastian G. schrieb:
> Mein Problem ist nur, dass nach dem CVRESET kein Acknowledge erzeugt> wird und ich nicht genau weiß warum.> Ein anderes Problem ist noch das ich beim lesen der CV's ebenfalls kein> Acknowledge bekomme.> Kann mir da wer weiter Helfen?
Sebastian G. schrieb:
> Und ob es eine einfache Möglichkeit gibt das Neonflackern nicht nur beim> ersten Start des Dekoder bei schon betätigte Funktion gibt, sondern auch> beim einschalten der jeweiligen Funktion im laufenden Betrieb?
Kann mir da keiner weiter helfen
Gruß
Sebastian
Hallo,
Sebastian G. schrieb:> Sebastian G. schrieb:>> Mein Problem ist nur, dass nach dem CVRESET kein Acknowledge erzeugt>> wird und ich nicht genau weiß warum.
ich meine gelesen zu haben, daß hier das ACK vor dem Beschreiben der
EEPROM-Zellen erfolgen muß und angenommen wird, daß die Werte erst nach
einem Neustart des Dekoders übernommen werden. Das Beschreiben der
vielen CVs/EEPROM-Zellen dauert einfach zu lang.
Gruß
Volkmar
Volkmar schrieb:> ich meine gelesen zu haben, daß hier das ACK vor dem Beschreiben der> EEPROM-Zellen erfolgen muß und angenommen wird, daß die Werte erst nach> einem Neustart des Dekoders übernommen werden. Das Beschreiben der> vielen CVs/EEPROM-Zellen dauert einfach zu lang.
Gibt es denn entweder eine Möglichkeit den Vorgang zu beschleunigen oder
eine andere Möglichkeit eine Reset der CV-Werte in den
"Auslieferungszustand" zu bewältigen.
Gruß
Sebastian
Hallo,
habe den Code erfolgreich auf einem ATTINY45 zum Laufen gebracht.
Ich möchte aber die Ausgänge invertieren - sprich Outputs sind low wenn
eingeschaltet.
Frage: Hat das schon jemand probiert?
Vorab mal ein großes DANKESCHÖN!
Eine Frage: Warum hast Du für den Funktionsdecoder 1206er Widerstände
genommen? Wg der Last?
Überlege mir einen Schwung dieser Decoder zu bauen. Die Platinen werde
ich dann wohl doppelseitig ausführen und herstellen lassen. Daher halt
die Frage, ob man die Widerstände nicht auch in 0805 nutzen kann. Zum
löten ist das ja nicht viel komplizierter :)
Muss gestehen, dass ich nicht den ganzen Thread gelesen habe -
vielleicht war das schon mal diskutiert worden :/
Danke & Gruß,
Torsten
ach ja - und dann noch eine Frage: Wie testet ihr die Decoder? Gibt es
dafür spezielle Tools mit der man eine DCC-Zentrale "steuern" kann?
Ich hatte mal vor einiger Zeit selbst mal versucht einen Dekoder zu
programmieren. Leider hat das dann im realen Betrieb nicht richtig
funktioniert. Hatte seinerzeit aber auch "nur" eine Lenz-Zentrale,
welche nun bei meinem Vater verbaut ist und fleißig genutzt wird :)
Danke & Grüße,
Torsten
Hallo
gibt es eigentlich schon neuigkeiten zu dem projekt vom Siegfried
Saueressig
"DCC-Decoder m8lok"
Hat die Umsetzung funktioniert.
Danke für eine Antwort
Hallo,
ich habe den Dekoder auf Basis eines Attiny45 plus L272 nachgebaut und
bekomme leider keine Rückmeldung, wenn ich ihn an meine Roco Multimaus
anschließe und ansteuere.
Ich möchte gerne ausschließen, dass die von mir kompilierte hex Datei
Fehler beinhaltet. Kann mir jemand die hex Datei für den Attiny45
bereitstellen?
Welche Fusebits müssen im Vergleich zum Auflieferungszustand geändert
werden?
Sind eigentlich im Quellcode Standard CV gesetzt?
Vielen Dank,
Niklas
Nachtrag zu vorigem Post:
Die von mir kompilierte hex Datei basiert auf dem angehängten Quellcode,
der hier weiter oben im Thread bereitgestellt wurde, siehe Anhang.
Ein Vergleich mit der Version für den AT15 zeigt, dass nur Registernamen
und Ports getauscht worden sind. Die erhöhte Frequenz des At45 im
Verlgeich zum At15 wurde nicht berücksichtigt. Deshalb habe ich auf
Grundlage des weiter oben geposteten PDF (ATtiny15zu25.pdf) den At45 in
den Kompatibilitätsmodus versetzt. Das Ergebnis ist, dass ich den At45
nicht mehr mittels Programmer ansprechen kann.
Kann mir jemand helfen? Hat jemand Erfahrung mit dem Umstieg von
Attiny15 zu Attiny25/45?
Bg,
Niklas
Niklas Freeman schrieb:> Kann mir jemand helfen?
Ich versuche es, obwohl ich es für sinnfrei halte, diese uralte auf
Tiny15 optimierte Software auf einem Tiny45 laufen zu lassen. Denn unter
Nutzung der Features des Tiny25/45/85 (zweiter Timer, bessere
Hardware-PWM, höherer Controllertakt, ...) ließe sich das durch
Neuprogrammierung bedeutend effizienter umsetzen.
Niklas Freeman schrieb:> Das Ergebnis ist, dass ich den At45> nicht mehr mittels Programmer ansprechen kann.
Ich vermute mal, Du hast die CKDIV8-Fuse nicht rausgenommen, nun
klappert der Tiny45 im Kompatiblitätsmodus zu langsam für Deinen
ISP-Takt. Du müsstest also mal mit dem ISP-Takt Deines Programmers auf
unter 1/4 des Controllertaktes runter gehen. Ich kann mich da aber auch
irren, habe zwar schon viele Tiny85 für Gartenbahn-Soundmodule
(Dampf/Diesel) benutzt, aber noch keinen im T15-Kompatiblitätsmodus.
Niklas Freeman schrieb:> Sind eigentlich im Quellcode Standard CV gesetzt?
Hast Du eigentlich in den von Dir geposteten Quelltext geschaut???
Was meinst Du, was das hier ist?:
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
Musst natürlich auch die EEP-Datei mit in den Controller übertragen...
...
Guten Morgen,
Danke für die Antwort.
Die CV Standardwerte habe ich mittlerweile auch gefunden, sie stehen
halt ganz am Ende vom Code. Allerdings wird bei mir keine eep Datei beim
Kompilieren erstellt.
Die CKDIV8-Fuse ist definitiv nicht das Problem, denn wenn ich nur diese
Fuse ändere gibt es kein Problem.
Gruß,
Niklas
Niklas Freeman schrieb:> Allerdings wird bei mir keine eep Datei beim> Kompilieren erstellt.
Wenn der Quelltext ein Eeprom-Segment enthält, sollte auch eine
EEP-Datei assembliert werden. Ist dies nicht der Fall, dann bedienst Du
Dein AVR-Studio falsch.
Niklas Freeman schrieb:> Die CKDIV8-Fuse ist definitiv nicht das Problem, denn wenn ich nur diese> Fuse ändere gibt es kein Problem.
Na denn ist's ja gut...
...
Nik schrieb:> 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
Erst einmal bitte ich um Entschuldigung diesen Thread zu exumieren, aber
mich würde interessieren ob NIK (Gast) hier noch zu erreichen ist.
Mich würde interessieren ob aus der Erfahrung mit den Silabs 8051
Derivaten in Hinsicht auf DCC etwas erstanden ist auf dass man
zurückgreifen könnte.
Leider überschneided sich DCC stark mit dem C-Compilerenvironment SDCC
womit unter der Fülle an Links zu letzterem mögliche Spuren auf eine DCC
Protokoll ziemlich untergehen...
Alle Sachdienlichen Hinweise werden mehr oder weniger vertraulich
behandelt ;)
Gruß aus LA(ndshut)
Bergy
Moin aus Hamburg,
Ich bin auch ein Freund von Parsic.
Gibt es schon einen Encoder also ein kleines Programm welches DCC schon
"lesen"kann.? Ich hätte es gern in Parsic um es besser verstehen zu
können.
Danke für eine Rückmeldung.
Tschüß Lemmi