• Hallo TT-Modellbahner, schön, dass du zu uns gefunden hast.
    Um alle Funktionen nutzen zu können, empfehlen wir dir, dich anzumelden. Denn vieles, was das Board zu bieten hat, ist ausschließlich angemeldeten Nutzern vorbehalten. Du benötigst nur eine gültige E-Mail-Adresse und schon kannst du dich registrieren.
    Deine Mailadresse wird für nichts Anderes verwendet als zur Kommunikation zwischen uns.
    Die Crew des TT-Boardes

Microcontroller

Dein Link ist ja höchst-interessant..
.......................
EDIT: Nach mehrmaligem Durchlesen der Beschreibung des im Link dargestellten Boards sowie der "externen Anleitung" hab ich es mir bestellt.
Danke für den Tipp!!!


Hi Tiger,

ja, probiere das Arduino ruhig mal aus. Auch wenn Du keine Zeit /Lust oder Möglichkeiten hast, spezielle und umfangreichere Projekte zu stemmen. Da gibt es genügend Leute die Dir da helfen können.
Gestern hatte ich einen jungen Freund etwas Einblick in diese Welt gegeben. Als die erste LED blinkte, war er nicht mehr zu halten… wie gesagt, wenn man Spaß an dieser Sache hat, stellt sich auch schnell ein Erfolgserlebnis ein. Es ist im Gegensatz zu manchen anderen Lösungen auch eine breite Gemeinschaft vorhanden.
 
Uns der Einstieg in die Arduino-Welt ist so teuer nun auch nicht - mit 15 EUR ist man dabei. Für 10 EUR kann man dann auch über's Netzwerk ansprechen. Fehlt nur noch ein Treiberchip für die anzusteuernden LEDs.

Mir persönlich fehlen leider ein paar DCC-spezifische Shields, sei es als Dekoder (also mit Gleichrichter, Optokoppler und Treiberchip) oder mit Booster. Klar, kann man alles selbst basteln, aber ich bin faul geworden und will lieber eine fertig geätzte Leiterplatte (zur Not auch schon bestückt) selber kaufen.
 
Hallo Hammy,

auf den Seiten
http://www.fichtelbahn.de/
und
http://bidib.org/
ist viel Text geschrieben.

Und wenn ich dich richtig verstehe, möchtest du selbst "basteln" aber als Bausatz mit fertig geätzter Leiterplatte.

Ich arbeite mich gerade in die Tag-/Nachtsteuerung über den Standard DMX ein. Mit dem Interface-Baustein „OneDMX“ können über den BiDiBus Effekt- und Lichtgeräte realistische Übergangsverläufe zwischen Tag und Nacht erzeugt werden.

oTTo
 
@Spreepaul:
Nochmals herzlichen Dank für den Link. Das Päckchen ist gestern angekommen. Ich konnte nicht widerstehen und hab mich erstmal damit beschäftigt.
Ich glaub, nen besseren Einstieg hätte ich nicht finden können.

TOP!!! Danke
 
Hier ein Besipiel zu Thema Programmieren in C, nur zur Anregung.
So sieht es aus, wenn man einen Servo testen will
Mit Impulszeit verkürzen oder verlängern wird der Servo nach links oder rechts gesteuert (Also Schranke auf oder zu, Signal auf oder ab oder Weiche rechts links)
Ich habe das Programm zum Testen des Servo verwendet.
Wer sich also damit plagen will, das script könnte als Kern für eine Servoansteuerung dienen, aber das muss noch eine Reihe verbessert werden. (Alle anderen schnell überfliegen)


#define F_CPU 1000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

ISR( TIMER1_COMPA_vect ) // Interruptbehandlungsroutine
{
OCR1A = 2500-OCR1A; // Das Servosignal wird aus der Differenz von
// Periodenlänge (2500*0,008ms=20ms) und letztem
// Vergleichswert (OCR1A) gebildet
}

int main (void)
{
DDRD = 0b00000000;
DDRC = 0b11111111;
DDRB = 0b10111110;
PORTB = (1<<PB6) | (1<<PB0); // Pullup für PB0 und PB1
// aussschließen von Stösignalen beim Einschalten

TCCR1A = (1<<COM1A0); // Togglen bei Compare Match
TCCR1B = (1<<WGM12) | (1<<CS11); // CTC-Mode; Prescaler 8
TIMSK = (1<<OCIE1A); // Timer-Compare Interrupt an

OCR1A = 2312; // Neutralposition ((2500-2312)*0.008ms)=1,5ms)

sei(); // Interrupts global an

while( 1 ) {

if ( !(PINB & (1<<PINB0)) ) { // Impuls-Zeit verlängern
cli();
OCR1A = OCR1A + 1;
sei();
// _delay_ms(50);
}
if ( !(PINB & (1<<PINB6)) ) { // Impuls-Zeit verkürzen
cli();
OCR1A = OCR1A -1;
sei();
// _delay_ms(50);
if ( !(PIND & (1<<PIND0)) ) PC0=OCR1A;
}
_delay_ms(18); // an das Ende, wegen der Vibrationen
}
return 0;
}
 
Dann stell ich doch glatt jetzt mal mein erstes Servoprojekt mit der angepriesenen Steuerung vor.

Ich hab ein kleines Video davon gemacht.
Im Nachhinein habe ich noch eine Polaritätsumschaltung ergänzt.
Aber seht selbst:

Video
 
Hallo Tiger82

Dein Servoprojekt ist ja echt interessant. Ist der nur für analog oder auch für digital geeignet, also mit Adressvergabe?
 
Wie du sehen kannst, ist das nur ein Arduino-Board, was um Potis, Taster und Servo erweitert wurde. Da ist so nix mit Digital; dazu bräuchte er ja noch mindestens einen Optokoppler. Was aber die ganze Sache für eine Servo allerdings sehr teuer machen würde. Ich denke, es geht hier eher um eine proof-of-concept-Geschichte.

@Tiger: magst auch noch den Quellcode zeigen?
 
Hi Hammy,

Na, soooo schlimm ist es auch nicht.

Allerdings gibt es da auch vergleichbare "Fertiglösungen". Der Tiger fängt erst an. Wird sich den Code gesaugt haben und freut sich das es fungsonubbelt. So haben wir doch alle angefangen?!?
Wenn es bissel mehr sein soll, dann kann ich Dir da gerne bei Helfen.
viele Grüße,
Marcus
 
#include <Servo.h>

const int taster = 2;

Servo myservo;
int angle = 90;
int tasterState = 2;



void setup() {

myservo.attach(9);
pinMode(taster, INPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(12, OUTPUT);
}

void loop()
{

int potpin1 = 0;
int val1;
int potpin2 = 1;
int val2;
int potpin3 = 2;
int val3;

tasterState = digitalRead(taster);
val1 = analogRead(potpin1); // reads the value of the potentiometer (value between 0 and 1023)
val1 = map(val1, 0, 1023, 10, 80); // scale it to use it with the servo (value between 0 and 180)

val2 = analogRead(potpin2); // reads the value of the potentiometer (value between 0 and 1023)
val2 = map(val2, 0, 1023, 100, 170); // scale it to use it with the servo (value between 0 and 180)

val3 = analogRead(potpin3); // reads the value of the potentiometer (value between 0 and 1023)
val3 = map(val3, 0, 1023, 0, 50); // scale it to use it with the servo (value between 0 and 180)


if (tasterState == HIGH)
if(angle > val1)
{
angle = angle-1;
delay(val3);
myservo.write(angle);

}

if (tasterState == LOW)
if(angle < val2)
{
angle = angle+1;
delay(val3);
myservo.write(angle);
}
if(angle < val2)
{
digitalWrite(8, HIGH);
digitalWrite(12, HIGH);
}
else
{
digitalWrite(8, LOW);
}


if(angle > val1)
{
digitalWrite(7, HIGH);
digitalWrite(12, LOW);
}
else
{
digitalWrite(7, LOW);
}
}


Soweit zum Quellcode, hier ist allerdings noch die "Stellungsrückmeldung" mit drin.
Zum Thema Digital: Ich persönlich werde zwar nur analog schalten, will mich aber noch mit der digitalen Sache beschäftigen, da wir das im Verein höchstwahrscheinlich machen wollen. Aber dazu brauch ich noch etwas mehr Zeit.
 
Ah, du nutzt gleich die (mir neue) Servo.h (wieder was gelernt). Als ich vor 2 (oder 3?) Jahren ähnliches gemacht habe, hab ich es auf die harte Tour mit Timer/Interrupt gemacht. Hab den Quellcode allerdings nicht mehr.

Und, zufrieden mit Arduino? Die "IDE" ist zwar ein Witz (aber wo gibt es schon eine brauchbare C/C++-IDE, also mit Refactoring-Support?), aber die ersten Erfolgserlebnisse hat man dank einfachem Anschluss ziemlich schnell, ge?
 
Um ganz ehrlich zu sein machts richtig Spaß. Der Einstieg fiel mir nicht sonderlich schwer, aber das kann auch daran liegen, dass ich im Studium mit C++ programmieren muss.
Wenn man sich aber die Tutorials auf youtube ansieht, dürfte man auch als Einsteiger recht schnell zum ersten Erfolg kommen.
Ich kanns kaum erwarten, die ersten ATMega auf bzw. unter der Anlage einzusetzen. :fasziniert:
 
Zurück
Oben