Zitat von Lokmaster
Hi
Was passiert wen ich 1 Km mit dem Messwagen gefahrenn habe?
Hi Amin
dann fängst Du mit dem 2. Kilometer an
Gruß
Alf
Zitat von Lokmaster
Hi
Was passiert wen ich 1 Km mit dem Messwagen gefahrenn habe?
Hi Amin
dann fängst Du mit dem 2. Kilometer an
Gruß
Alf
Pickel-Bahner seit 1958 / K-Gleis + ZIMO-Decoder (MX633P22/MX645P22)
RocRail & RocNetNode jeweils auf RasPi
Email bezüglich MobaLedLib-Belange: LedLib@yahoo.com
Beiträge: | 1.279 |
Registriert am: | 03.04.2012 |
Ort: | MKK, Hessischer Spessart |
Gleise | K-Gleis und Selbsbau-Pickel-Gleis (DC-Gleis mit Mittelleiter ausrüsten) |
Spurweite | H0 |
Steuerung | Rocrail + Rocnetnode auf Raspi |
Stromart | Digital |
Hi Alf
Mensch,da hätte ich auch selber drauf kommen können
Gruß
Armin
H0 mit Intellibox DCC
Roco,Piko,Lima.usw Loks sind viel zuviel und bei den Wagons ist es genauso
Beiträge: | 1.344 |
Registriert am: | 26.06.2006 |
Ort: | Bruchertseifen |
Spurweite | H0 |
Steuerung | Intellibox Neo |
Stromart | Digital |
Hallo,
so, Messwagen die Zweite g
Größere Bilder gibt es auf meiner HP
Gruß
Volker
Beiträge: | 2.708 |
Registriert am: | 01.11.2008 |
Homepage: | Link |
Gleise | C-Gleis |
Spurweite | H0 |
Steuerung | CS2, CS3 WDP2021 |
Stromart | Digital |
Guten Morgen
Die hier eingestellten Bilder gefallen mir alle sehr. Einen tollen Wagen hast du da gebastelt, Volker.
Nun zeige ich euch auch ein paar Bilder von meinem Wagen,den ich jetzt aufgebaut habe:
Außerdem habe ich dieses Wochenende ein neues Programm für den Atmel geschrieben. Dieses erfasst nun die Geschwindigkeiten viel genauer. Die Auflösung des Messwertes ist deutlich größer. Ferner reagiert die Anzeige der Geschwindigkeit jetzt fast ohne Verzögerung. Das ganze basiert auf die Implementierung eines langsamen Zählers. Da für die Messungen vergleichsweise nur wenige Impulse des Hallsensor ausgegeben werden, kann durch einfaches Zählen der Impulse nur eine geringe Auflösung erreicht werden.
Nun habe ich das Programm so gestaltet, dass im Hintergrund ein schnell laufender Counter im Atmel permanent hochzählt. Nach einer beliebig im Programm einstellbaren Anzahl an Radumdrehungen des Messwagens wird dieser Counter ausgelesen. Aus diesem Wert lässt sich durch Quotientenbildung mit der zurückgelegten Strecke (Anzahl der Radumdrehungen multipliziert mit dem Umfang) sehr dynamisch die Geschwindigkeit berechnen. Ferner habe ich alle wichtigen Parameter, die im Programm eingestellt werden können, als #define-Angabe aufgelistet, um so schnell und übersichtlich alle Einstellungen wiederzufinden. Um alle Funktionen zu realisieren, war es nötig, alle drei im Atmel verfügbaren Timer zu nutzen. Dabei übernimmt der Timer 2 des Atmels sogar zwei Funktionen: Das Multiplexen der Anzeige sowie die Berechnung der Fahrzeit.
Ebenfalls habe ich die Dokumentation entsprechend überarbeitet und dort noch ein paar Erläuterungen zu den #define-Angaben eingepflegt.
Hier das neue Programm:
//Main.c Messwagen Programmversion 2.0
#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "routines.h"
uint32_t p=0;
ISR(TIMER2_OVF_vect)
{
task_segments();
p++;
if (p>2929) //1s
{
gettime();
p=0;
}
}
ISR (TIMER0_COMP_vect)
{
getpath();
unsigned char sreg;
sreg = SREG;
cli();
uint16_t impulse = TCNT1;
TCNT1=0;
SREG = sreg;
getspeed(impulse);
}
ISR (TIMER1_COMPA_vect)
{
getspeed(0);
}
int main(void)
{
init();
_delay_ms(1000); //start-up time
sei();
while(1)
{
getswitch();
}
}
//routines.h Messwagen Programmversion 2.0
#define raddurchmesser 10.55
#define mittelradsensor 3
#define kalibrierungPTC 80
#define mittelPTC 500
#define nullstellung 30000
//Initialisierung ADC/Timer
void init( void );
//Initialisierung Timer0
void timer_enable0(void);
//Initialisierung Timer1
void timer_enable1(void);
//Initialisierung Timer2
void timer_enable2(void);
//Initialisierung ADC
void adc_init(void);
//Einlesen der Switches von Multidecoder
void getswitch(void);
//Berechnung Temperatur
int64_t gettemperature(void);
//Ausgabe Temperatur
void set_segments(int64_t val);
//Multiplexen der Anzeige
void task_segments(void);
//Berechnung Fahrstrecke
void getpath(void);
//Berechnung Gesschwindigkeit
void getspeed(uint16_t val);
//Berechnung Zeit
void gettime(void);
//routines.c Messwagen Programmversion 2.0
#include <avr/io.h>
#include <util/delay.h>
#include "routines.h"
uint8_t pos = 0;
uint16_t zeit=0;
double strecke=0;
double offset = raddurchmesser*0.0314*mittelradsensor;
float geschwindigkeit=0;
float offset2 = 3.14*raddurchmesser*mittelradsensor*5859.375;
uint16_t maxgeschwindigkeit=0;
int64_t temperatur =0;
uint8_t dimmer = 0;
uint8_t display[]= { 0, 0, 0, 0, 0};
const uint8_t segments[] = {0b01111011, 0b01010000, 0b00111101, 0b01110101, 0b01010110, 0b01100111, 0b01101111, 0b01010001, 0b01111111, 0b01110111, 0b11111011, 0b11010000, 0b10111101,0b11110101, 0b11010110, 0b11100111, 0b11101111, 0b11010001, 0b11111111, 0b11110111 };
void init(void)
{
DDRA=0x00;
DDRB=0b00000000;
DDRC=0xFF;
DDRD=0xFF;
timer_enable0();
timer_enable1();
timer_enable2();
adc_init();
}
void timer_enable0(void) // for multiplexing
{
TCCR2=2; //activate Timer0 with CPU-clock / 8
TCNT2=0; //reset counter value
TIMSK|=(1<<TOIE2); // Timer Overflow Interrupt enable
}
void timer_enable1(void)
{
TCCR1A = 0;
TCCR1B |= (1 << CS10) | (1 << CS12); //prescaler of 1024
TCNT1=0; //reset counter value
TIMSK|=(1<<OCIE1A); // Timer Overflow Interrupt enable
OCR1A=nullstellung;
}
void timer_enable2(void) // for counting Hallsensor
{
TCCR0 |= (1 << WGM01)| (1 << CS01)| (1 << CS02);// activate Counter at falling edge at TO pin, CTC mode
TIMSK |= (1 << OCIE0); // Enable CTC interrupt
OCR0 = mittelradsensor-1;
TCNT0=0; //reset counter value
}
void adc_init(void)
{
ADCSRA |= (1<<ADEN) | (1<<ADATE) | (1<<ADPS2) | (0<<ADPS1) | (1<<ADPS0) | (1<<ADSC);
ADMUX|= (1<<REFS0) | (0<<REFS1)| (0<<ADLAR) ; // AVcc Volt als Referenz
SFIOR|= (0<< ADTS2)| (0<<ADTS1)| (0<<ADTS0); // free running
ADMUX|= (0<<MUX0) | (0<<MUX1) | (0<<MUX2) | (0<<MUX3)| (0<<MUX4) ; // chose Port PA0 for ADC
}
void getswitch(void) // get switches from Multidecoder
{
uint8_t fxdecoder=PINA;
fxdecoder = fxdecoder & 0b00011110;
if (fxdecoder==0) // off
{
display[0]=0x00;
display[1]=0x00;
display[2]=0x00;
display[3]=0x00;
dimmer=1;
}
else if (fxdecoder==2) // Geschwindigkeit f1
{
float tempa = geschwindigkeit*3.132;
uint16_t temp=tempa;
uint8_t tausend = temp/1000;
uint8_t hundert = (temp%1000)/100;
uint8_t zehner = (temp%100)/10;
uint8_t einer = (temp%10);
display[0]=segments[einer];
display[1]=segments[zehner+10];
display[2]=segments[hundert];
display[3]=segments[tausend];
dimmer=1;
}
else if (fxdecoder==4) // Strecke f2
{
uint16_t streckeraw = strecke;
uint8_t hundert = streckeraw/1000;
uint8_t zehner = (streckeraw%1000)/100;
uint8_t einer = (streckeraw%100)/10;
uint8_t komma = (streckeraw%10);
display[0]=segments[komma];
display[1]=segments[einer+10];
display[2]=segments[zehner];
display[3]=segments[hundert];
dimmer=1;
}
else if (fxdecoder==8) // Fahrzeit f3
{
uint16_t minutenraw=zeit/60;
uint8_t stunden1 = (minutenraw/60);
uint8_t minuten2 = (minutenraw%60)/10;
uint8_t minuten1 = (minutenraw%10);
display[0]=segments[minuten1];
display[1]=segments[minuten2];
display[2]=segments[stunden1+10];
display[3]=0b00000000;
dimmer=1;
}
else if (fxdecoder==6) //Vmax f4
{
uint16_t temp = maxgeschwindigkeit*3.132;
uint8_t tausend = temp/1000;
uint8_t hundert = (temp%1000)/100;
uint8_t zehner = (temp%100)/10;
uint8_t einer = (temp%10);
display[0]=segments[einer];
display[1]=segments[zehner+10];
display[2]=segments[hundert];
display[3]=segments[tausend];
dimmer=1;
}
else if (fxdecoder==10) //Temperatur f1 + f2
{
dimmer=1;
set_segments(gettemperature());
}
else if (fxdecoder==14) // RESET f1 + f2 + f3+ f4
{
zeit=0;
strecke=0;
geschwindigkeit=0;
maxgeschwindigkeit=0;
display[0]=0b00000100;
display[1]=0b00000100;
display[2]=0b00000100;
display[3]=0b00000100;
dimmer=1;
}
else if (fxdecoder==16) // off
{
display[0]=0x00;
display[1]=0x00;
display[2]=0x00;
display[3]=0x00;
dimmer=2;
}
else if (fxdecoder==18) // Geschwindigkeit f1
{
float tempa = geschwindigkeit*3.132; //9/2500*87*10
uint16_t temp=tempa;
uint8_t tausend = temp/1000;
uint8_t hundert = (temp%1000)/100;
uint8_t zehner = (temp%100)/10;
uint8_t einer = (temp%10);
display[0]=segments[einer];
display[1]=segments[zehner+10];
display[2]=segments[hundert];
display[3]=segments[tausend];
dimmer=2;
}
else if (fxdecoder==20) // Strecke f2
{
uint16_t streckeraw = strecke;
uint8_t hundert = streckeraw/1000;
uint8_t zehner = (streckeraw%1000)/100;
uint8_t einer = (streckeraw%100)/10;
uint8_t komma = (streckeraw%10);
display[0]=segments[komma];
display[1]=segments[einer+10];
display[2]=segments[zehner];
display[3]=segments[hundert];
dimmer=2;
}
else if (fxdecoder==24) // Fahrzeit f3
{
uint16_t minutenraw=zeit/60;
uint8_t stunden1 = (minutenraw/60);
uint8_t minuten2 = (minutenraw%60)/10;
uint8_t minuten1 = (minutenraw%10);
display[0]=segments[minuten1];
display[1]=segments[minuten2];
display[2]=segments[stunden1+10];
display[3]=0b00000000;
dimmer=2;
}
else if (fxdecoder==22) //Vmax f4
{
uint16_t temp = maxgeschwindigkeit*3.132;
uint8_t tausend = temp/1000;
uint8_t hundert = (temp%1000)/100;
uint8_t zehner = (temp%100)/10;
uint8_t einer = (temp%10);
display[0]=segments[einer];
display[1]=segments[zehner+10];
display[2]=segments[hundert];
display[3]=segments[tausend];
dimmer=2;
}
else if (fxdecoder==26) //Temperatur f1 + f2
{
dimmer=2;
set_segments(gettemperature());
}
else if (fxdecoder==30) // RESET f1 + f2 + f3+ f4
{
zeit=0;
strecke=0;
geschwindigkeit=0;
maxgeschwindigkeit=0;
display[0]=0b00000100;
display[1]=0b00000100;
display[2]=0b00000100;
display[3]=0b00000100;
dimmer=2;
}
else
{
// display error
display[0]=0b00000000;
display[1]=0b00001100;
display[2]=0b00001100;
display[3]=0b00101111;
}
}
int64_t gettemperature(void)
{
int64_t temperaturadc =0;
float hilf =0;
int16_t i;
int64_t temp1=0;
int64_t temp2=0;
int64_t temp3=0;
for(i = 0; i<mittelPTC ; i++)
{
temperaturadc +=ADC;
_delay_ms(5);
}
temperaturadc=(temperaturadc*10)/mittelPTC;
hilf = (temperaturadc*4.8828125)/(50000-(temperaturadc*4.8828125)); //Umrechnung Messspannung am Spannungsteiler
temp1=hilf*hilf*hilf*2854;
temp2=hilf*hilf*15850;
temp3=hilf*47480;
temperatur=temp1-temp2+temp3-31985; // Kennlinie des PTC
temperatur+=kalibrierungPTC;//Kalibrierung des PTC
return temperatur;
}
void task_segments(void)
{
switch(pos)
{
case 0: PORTD=display[4]; PORTC &= ~(1<<PC2); if(dimmer!=1){_delay_us(1750);}else{_delay_ms(1);}; PORTC |= (1<<PC0); PORTD=display[pos]; pos++; break;
case 1: PORTD=display[4]; PORTC &= ~(1<<PC0); if(dimmer!=1){_delay_us(1750);}else{_delay_ms(1);}; PORTC |= (1<<PC1); PORTD=display[pos]; pos++; break;
case 2: PORTD=display[4]; PORTC &= ~(1<<PC1); if(dimmer!=1){_delay_us(1750);}else{_delay_ms(1);}; PORTC |= (1<<PC3); PORTD=display[pos]; pos++; break;
case 3: PORTD=display[4]; PORTC &= ~(1<<PC3); if(dimmer!=1){_delay_us(1750);}else{_delay_ms(1);}; PORTC |= (1<<PC2); PORTD=display[pos]; pos=0; break;
}
}
void set_segments(int64_t val)
{
if(val<(-9999)) // return Error E1
{
display[0]=0b00000000;
display[1]=0b00000000;
display[3]=0b00101111;
display[2]=0b01010000;
return;
}
if(val>9999) // return Error E2
{
display[0]=0b00000000;
display[1]=0b00000000;
display[3]=0b00101111;
display[2]=0b00111101;
return;
}
// Ausgabe Temperatur
if(val>=0)
{
uint8_t tausend = (val%10000)*0.001;
uint8_t hundert = (val%1000)*0.01;
uint8_t zehner = (val%100)*0.1;
if(tausend==0)
{
display[2]=0b00000000;
}
else
{
display[2]=segments[tausend];
}
display[1]=segments[hundert+10];
display[0]=segments[zehner];
display[3]=0b00000000;
}
if(val<0)
{
val=-val;
uint8_t hundert = (val%1000)*0.01;
uint8_t zehner = (val%100)*0.1;
display[2]=0b00100000; // minus
display[1]=segments[hundert+10];
display[0]=segments[zehner];
display[3]=0b00000000;
}
}
void getpath(void)
{
strecke= strecke+offset;
}
void getspeed(uint16_t val)
{
if (val!=0)
{
geschwindigkeit=(offset2)/val;
}
else
{
geschwindigkeit=0;
}
if (geschwindigkeit>maxgeschwindigkeit)
{
maxgeschwindigkeit=geschwindigkeit;
}
}
void gettime(void)
{
zeit++;
}
Einen schönen Sonntag,
Oliver
Bastelprojekt mit Mikrokontroller - Bluetooth Verbindung: Selbstbau HO Messwagen mit Atmega16
Beiträge: | 455 |
Registriert am: | 19.01.2011 |
Hallo,
ich möchte auch einmal meinen Messwagen vorstellen.
Noch einmal vielen Dank für die Entwicklung des Messwagens.
Ist es möglich, eine zweite Anzeige für die andere Wagenseite einzubinden? Geht das einfach mit einer Zweiten Platine, die ich in das Flachbandkabel einklinke?
Gruß
Olaf
Zitat von ozul
Hallo,
ich möchte auch einmal meinen Messwagen vorstellen.
Noch einmal vielen Dank für die Entwicklung des Messwagens.
Ist es möglich, eine zweite Anzeige für die andere Wagenseite einzubinden? Geht das einfach mit einer Zweiten Platine, die ich in das Flachbandkabel einklinke?
Gruß
Olaf
Hallo Olaf,
das habe ich mich auch schon gefragt, aber das wird leider bei meinen beiden Wagen nicht passen und somit habe ich den Gedanken verworfen.
Gruß
Volker
Beiträge: | 2.708 |
Registriert am: | 01.11.2008 |
Homepage: | Link |
Gleise | C-Gleis |
Spurweite | H0 |
Steuerung | CS2, CS3 WDP2021 |
Stromart | Digital |
Guten morgen,
theoretisch ist es möglich, eine zweite Anzeigeplatine einzubauen. Wie Olaf schon richtig gesagt hat, kann dies durch einfaches Anklinken an das Flachbandkabel geschehen.
Soweit die Theorie. in der Praxis ist es aber so, dass der Strom, der dann aus dem Atmel herausfließt, ca. im Bereich der absolute maximum ratings liegt. Ich habe den Stromfluss jetzt noch nicht gemessen, der momentan durch eine Anzeigeplatine fließt. Geschätzt würde ich mal so auf ca. 20mA pro Pin tippen.
Auf jeden Fall sollten dann die Widerstände zu den 7 Segmentanzeigen auf der Anzeigeplatine erhöht werden. Ich werde mal den Strom an meinem Messwagen mit einem Multimeter messen und diesen Wert hier veröfffentlichen.
Gruß
Oliver
PS: Ich hätte sogar noch eine einzelne Anzeigeplatine übrig, da ich bei einen Platinensatz nur die Steuerplatine benötigt habe.
Bastelprojekt mit Mikrokontroller - Bluetooth Verbindung: Selbstbau HO Messwagen mit Atmega16
Beiträge: | 455 |
Registriert am: | 19.01.2011 |
Hallo,
ich habe jetzt auch einen Programmer bekommen und nach anfänglichen Schwierigkeiten habe ich jetzt mit Olivers Unterstützung und einigem hin und her die neue SW programmiert bekommen. Vielen Dank noch mal Oliver für die Hilfe.
Was mich so einiges an Zeit gekostet hatte, es kam immer wenn ich auf Apply ging eine Fehlermeldung (siehe Bild) und ich dachte der Programmer wird nicht erkannt. Bis ich dann mit einem Bekannten drauf kam den Wagen mal zusätzlich aufs Gleis zu stellen und siehe da, es klappte dann.
Aber jetzt zur neuen SW. Die gefällt mir viel besser, die Geschwindigkeitsanzeige ist jetzt um ein vielfaches schneller.
Mal sehen, vielleicht versehe ich meinen Wagen mit 4 Magneten und passe die SW dem entsprechend an. Aber wie : ops:
Gruß
Volker
Beiträge: | 2.708 |
Registriert am: | 01.11.2008 |
Homepage: | Link |
Gleise | C-Gleis |
Spurweite | H0 |
Steuerung | CS2, CS3 WDP2021 |
Stromart | Digital |
Hallo,
an einer kleinen Anleitung, wie ich aus den drei Textdateien ein Programm bekomme, das ich auf den Chip flashen kann, wäre ich auch interessiert.
Viele Grüße
Olaf
Zitat von ozul
an einer kleinen Anleitung, wie ich aus den drei Textdateien ein Programm bekomme, das ich auf den Chip flashen kann, wäre ich auch interessiert.
Die Anleitung kannst du kriegen, schwierig ist das nicht. Aber ... hast du auch den benötigten Programmer? Ohne kannst du mit dem Programm nichts anfangen, und mit solltest du das eigentlich schon können
Viele Grüße,
Moritz
Beiträge: | 3.729 |
Registriert am: | 22.12.2010 |
Spurweite | H0 |
Stromart | Digital |
Hallo Moritz,
vielen Dank für Deine Antwort.
Den Programmer habe ich schon bestellt. Nun brauche ich nur noch die Anleitung, wie ich das Programm aus den drei Dateien mit Atmel Studio auf den Chip bekomme.
Viele Grüße
Olaf
Guten Abend
Hier die Anleitung zum Programmieren des Atmels unter AVRStudio.
Zu aller erst muss der Programmer einmal in Atmel Studio eingebunden werden. Dafür den Programmer an den PC anschließen. Dann unter Tools -> Add Target den neuen Programmer hinzufügen. STK500 sollte dort im Feld stehen bleiben. Oft muss der Treiber des Programmers noch installiert werden. Ob der Treiber richtig installiert ist, kann unter Windows im Gerätemanager unter "COM & LTP" nachgeschaut werden.
Nun zum eigentlichen Programm. Dieses besteht aus drei Dateien, der Hauptdatei (main.c) sowie einer externen C-Datei (routines.c) und der dazugehörigen Headerdatei (routines.h).
Zum Einrichten des Programms muss ein neues Projekt angelegt werden. Dazu im Einstiegsfenster auf New Project gehen. Im aufpoppenden Fenster AVRGCC C Executable Project auswählen und abspeichern. Dann muss der richtige µC ausgewählt werden. Hier ist der ATmega16A auszuwählen.
Nun erscheint das Programmierfenster. In diesem Fenster den Quellcode der main.c einfügen.
Es fehlen noch die Dateien routines.c und routines.h im Projekt. Dazu im Projektmappen-Explorer (rechte Seite im Fenster) mit Rechtsklick auf das Projekt -> Hinzufügen -> Neues Element hinzufügen. Dann einmal C File auswählen. Das ist die routines.c Datei. Analog muss für die routines.h Datei Include File ausgewählt werden. Auch in diese zwei neuen Dateien den Quellcode kopieren. Dann das Projekt abspeichern.
Mit F7 wird das gesamte Projekt kompiliert und das HEX-File für den Atmel erzeugt.
Um nun den Atmel zu programmieren, muss der Programmer mit der Platine verbunden werden. Dann in Atmel Studio Tools -> Device Programming aufrufen. So gelangt man in das Programmierfenster.
Unter Tool den Programmer auswählen, unter Device muss ATmega16A stehen. In dem Register Memories am linken Rand wird das generierte HEX-File ausgewählt. Dann auf Program klicken und der Atmel wird programmiert
Um die Fusebits zu programmieren, geht man auf das Register Fuses. Hier werden sofort die aktuellen Fusebits deines Atmels angezeigt. Normalerweise sollte das Fusebit JTAGEN schon deaktiviert sein. Die Fusebits für die externe Taktquelle sollten ebenfalls schon eingestellt sein. Zum Überprüfen und ggf. Einstellen wieder das Programmierfenster aufrufen. Dann das Register Fuses aufrufen. In dem Fenster erscheinen wie gehabt alle möglichen Fusebits. In dieser Liste zum letzten Punkt scrollen. Gesucht ist SUT_CKSEL. In dieser Liste muss EXTMEDFXTALRES _16KCK_4MS auswählt werden. Dieser Befehl definiert einen Quarz als externe Taktquelle. Zum Einschwingen sind 16 Taktzyklen bestimmt, mit einer Verzögerung von 4 ms.
Das war soweit eine schnelle Übersicht zur Programmierung.
Gruß
Oliver
Bastelprojekt mit Mikrokontroller - Bluetooth Verbindung: Selbstbau HO Messwagen mit Atmega16
Beiträge: | 455 |
Registriert am: | 19.01.2011 |
Hallo Oliver,
vielen Dank für die Anleitung.
Wenn ich den Programmer habe, berichte ich über den Erfolg oder Misserfolg.
Einen schönen Sonntag wünscht
Olaf
Hallo Oliver,
danke für die Anleitung!
Ich hab eine GALEP III Prgrammer. Mal sehn ob sich der Oldtimer auch einbinden lässt. Einen Wagen hab ich nun auch.
Gruß Stephan
Modellbahn ist nur ein Teil meiner Hobbys
Technisches
Zentrale: 6021, MS1, MS2, CS1 60212 und CS2 60214 (HW4.33) mit Mainstation, das ganze auf dem Teppich mit mfx. Oder mit dem ZX81 in MM1.
Hallo,
der Programmer ist angekommen. Die Schnittstellen habe ich schon angelötet.
Nun habe ich noch eine Frage. Muss der Messwagen zum Programmieren auf dem Gleis stehen und von dort seine Spannungsversorgung bekommen oder kann ich auch die Spannungsversorgung des Programmers mit 5V benutzen?
Gruß
Olaf
Hallo Olaf,
du kannst die Spannungsversorgung von 5V aus dem Programmer benutzen. Das hat bei mir auch immer prima funktioniert. Der Messwagen benötigt deutlich weniger Strom als der USB Port maximal (ich glaub 500mA waren das : ) liefern kann.
Gruß
Oliver
Bastelprojekt mit Mikrokontroller - Bluetooth Verbindung: Selbstbau HO Messwagen mit Atmega16
Beiträge: | 455 |
Registriert am: | 19.01.2011 |
Hallo Oliver,
vielen Dank für die schnelle Antwort.
Gruß
Olaf
Hallo,
heute bin ich endlich dazu gekommen, das neue Programm auf den Atmel zu schreiben.
Ich dachte eigentlich, dass das kein Problem darstellen sollte. Irgendwie bekomme ich keine Verbindung zumISP-AVR Programmer. Egal ob die Messwagen Platine verbunden ist oder nicht, ich bekomme immer folgenden Fehler:
Unable to connect to tool STK500 (COM3)
Timestamp: 2014-11-16 15:55:28.471
Severity: ERROR
ComponentId: 20000
StatusCode: 0
Failed to set-up tool (no context id returned).
Liegt es daran, dass keine Verbindung zum ATmega aufgebaut werden kann oder ist der Programmer defekt.
Es leuchtet auch nur die grüne LED des Programmers. Die gelbe LED leuchtet bei einem Verbindungsversuch nicht auf.
Die Spannungsversorgung funktioniert. Die Messwagenanzeige leuchtet.
Vielleicht könnte mir jemand einen Rat geben.
Mit freundlichen Grüßen
Olaf
Hallo Olaf,
du benutzt AVR Studio, richtig?
Das hört sich sehr stark nach einem Problem des Programmers selbst bzw. einem Kommunikationsproblem zwischen Programmer und AVR-Studio an. Ist der Programmer auch vorher in AVR-Studio eingebunden worden?
Manchmal hakt es bei mir auch, dann gehe ich wie folgt vor:
AVR-Studio öffnen, dann den Programmer an den PC und den Messwagen anschließen. Erst jetzt das Programmierfenster in AVR-Studio öffnen. Jetzt sollte der Programmer gefunden worden sein. Falls nicht: Schaue mal bei eingestecktem Programmer unter Windows in den Gerätemanager. Hier sollte der Programmer unter "COM & LTP" aufgelistet sein.
Gruß
Oliver
Bastelprojekt mit Mikrokontroller - Bluetooth Verbindung: Selbstbau HO Messwagen mit Atmega16
Beiträge: | 455 |
Registriert am: | 19.01.2011 |
Hallo Oliver,
ich habe den Fehler gefunden. Es waren fehlende USB-Treiber des Avr Studios. Wieso diese nicht mitinstalliert wurden, weiss ich nicht. Nachden ich diese nachinstalliert hatte, konnte ich auf den Programmer zugreifen.
Zu mehr hatte ich um diese Zeit keine Lust.
Ich melde mich nach hoffentlich erfolgreichen Flashen wieder.
Gruß
Olaf
Hi
Wieviele Messwagen sind denn bis jetzt entstanden?
Gruß
Armin
H0 mit Intellibox DCC
Roco,Piko,Lima.usw Loks sind viel zuviel und bei den Wagons ist es genauso
Beiträge: | 1.344 |
Registriert am: | 26.06.2006 |
Ort: | Bruchertseifen |
Spurweite | H0 |
Steuerung | Intellibox Neo |
Stromart | Digital |
Hi,
ich habe insgesamt 30 Platinensätze bestellt. 28 davon sind hier im Forum verkauft worden; 2 habe ich behalten.
Gruß
Oliver
Bastelprojekt mit Mikrokontroller - Bluetooth Verbindung: Selbstbau HO Messwagen mit Atmega16
Beiträge: | 455 |
Registriert am: | 19.01.2011 |
Einen habe ich bekommen und leider nicht richtig zusammengelötet.
Über PN habe ich mit Oliver Kontakt aufgenommen und nach vergeblichen
reparaturversuchen hat Oliver das dann für mich in Ordnung gebracht.
Dafür ganz Herzlichen Dank nach Aachen.
Freundliche Grüße
Hansi
Beiträge: | 881 |
Registriert am: | 09.01.2010 |
Ort: | bei Peine |
Gleise | C- Gleis |
Spurweite | H0 |
Steuerung | CS 2 iTrain |
Stromart | Digital |
Hi
Also meiner hat sofort funktioniert.
Gruß
Armin
H0 mit Intellibox DCC
Roco,Piko,Lima.usw Loks sind viel zuviel und bei den Wagons ist es genauso
Beiträge: | 1.344 |
Registriert am: | 26.06.2006 |
Ort: | Bruchertseifen |
Spurweite | H0 |
Steuerung | Intellibox Neo |
Stromart | Digital |
Und ich kam noch nicht dazu meinen einzubauen. Das echte Leben hat es verhindert.
Aber kommt Zeit kommt Einbau (wahrscheinlich um die Weihnachtszeit).
Gruß
Florian
Mein Projekt Traudelsheim
Beiträge: | 918 |
Registriert am: | 27.08.2012 |
Spurweite | H0 |
Steuerung | CU 6021 |
Stromart | AC, Digital |
Einfach ein eigenes Forum erstellen |