Hallo, ich suche eine Lösung, um einige Relais mit dem Computer zu schalten. Auch das Überwachen einiger Eingänge sollte möglich sein. Ich verwende das Betriebssystem Linux. Welche Lösung könnt ihr mir empfehlen ? Wenn, Mikrocontroller, dann: Welche sind empfehlenswert ? Wie können solche Controller mit Linux programmiert werden ? Gestalet sich das eher umständlich und funktioniert es nur mit Glück ? Wäre es vielleicht besser einen I²C-Bus zu verwenden ? Ich habe bisher noch keine Erfahrung mit Programmierung in C/C++ oder Assembler. Danke MfG Sven
Ich weiß, es klingt ungewöhnlich: Lies einfach die entsprechenden Artikel im Wiki auf dieser Seite...
>Hallo, >ich suche eine Lösung, um einige Relais mit dem Computer zu schalten. >Auch das Überwachen einiger Eingänge sollte möglich sein. Ich verwende >das Betriebssystem Linux. Kein Problem -- ich verwende eine Platine mit dem AT90USB: http://ssalewski.de/AVR_USB_gEDA.html.de In den nächsten Wochen kommt auf meine Homepage ein kleines Beispiel dazu. Aber wenn man in diesem Bereich ein völliger Anfänger ist muss man sich eben etwas einarbeiten. Gruß Stefan Salewski
Wenns AVRs sein dürfen und du eine "größere" Distribution (zb Ubuntu, Debian...) verwendest sind oft alle Tools schon als Pakete vorhanden. Einfach die Pakete avr-libc, binutils-avr und gcc-avr installieren und dann Tutorials durcharbeiten. Falls du dann nen LPT Programmer verwenden möchtest gibt allenfalls den Nachteil dass das Flashen eventuell nur als root funktioniert (wegen Port Zugriff).
Hi Sven, du kannst dir natürlich auch einen I2C-Adapter für den Druckerport basteln und dann LM-SENSORS einsetzen um einen I2C-Portexpander anzusprechen... ich hab so mal ein LC-Display (am PCF8574) mit dem I2C-Bus einer BT8x8 TV-Karte gesteuert. Dann brauchst du nur noch ein paar Treiberstufen (ULN) an den PCF anschliessen und kannst kleine Relais damit schalten. Eine alternative wäre es einen kleinen Mikrocontroller (z.B. Attiny2313) zu nehmen und diesen über den COM-Port des PCs anzusprechen... ist mit entsprechenden Tutorials ganz einfach. Gruß, SIGINT
Falls du den AVR mit einem Programmieradapter für den Parallelport flashen willst, empfehle ich dir avrdude. Falls es ein grösseres Projekt wird, steht im GCC-Tutorial auf dieser Seite, wie du dir eine komfortable Makefile schreibst. Ansonsten kannst du ales erstmal auch von Hand machen: Du hast gerade main.c im Editor deiner Wahl geschrieben. Dann: 1) Compilieren (mmcu steht für den verwendeten Controller hier ein Mega16) avr-gcc -mmcu=atmega16 -o main.elf main.c 2) In Hex File umwandeln avr-objcopy -O ihex main.elf main.hex 3) Zum Controller übertragen avrdude -p m16 -c stk200 -P /dev/parport0 -U flash:w:main.hex:a stk200 steht für den verwendeten Programmieradapter. Ich verwende das Parallelport Modell aus dem Tutorial hier. Das ganze ist an der ersten (und einzigen) parallelen Schnittstelle meines PCs angeschlossen, deshalb /dev/parport0. Falls du darauf nicht zugreifen darfst, tut es ein beherztes "chmod o+rw /dev/parport0" als root. Oder Gruppe von deinem Benutzer anpassen. So, das ist (glaube ich) die Grundausstattung. Mit der kannst du halbwegs komfortabel kleine Programme in C schreiben und in deinen Controller kneten. Für erste Versuche mit AVRs und Linux sollte es ausreichen. Wie schon oben gesagt, ist meist alles schon in den Paketen deiner Distribution vergraben. avr-gcc, avr-libc und avr-binutils oder ähnlich sollten die benötigten Pakete sein.
Die Lösung mit dem I²C-Bus gefällt mir eigentlich besser, weil ich dann nicht noch einen Microcontroller programmieren muss. Gibt es für den Druckerport-Adapter eine Bauanleitung oder muss man einfach nur ein paar Pins abgreifen ? Das hier: http://www.horter.de/i2c/i2c-modem/i2c_modem_1.html sollte auch mit LM-Sensors funktionieren, oder ? Kann man Microcontroller unbegrenzt oft programmieren ? Danke Gruß Sven
> Kann man Microcontroller unbegrenzt oft programmieren ?
Die meisten haben Flash Speicher. Je nach Hersteller werden dafür
mindestens 1000 .. 10000 Schreibzyklen angegeben. Das dürfte im
Normalfall reichen :-)
Naja, soweit ich das sehe, ist das von dir genannte Modem nicht viel mehr als ein Microcontroller (PIC laut Aufkleber), der halt seriell auf I2C und zurück wandelt. Das selber zu machen ist jetzt nicht unbedingt sofort als Einstieg machbar. Aber guck dir doch mal hier das Tutorial an, wenn du das alles abnicken kannst, werf mal einen Blick ins Datenblatt z.B. vom ATMega16. Dich sollte vorallem das Kapitel TWI (two wire interface, ist aber I2C) und das USART Kapitel interessieren. Wenn du die beiden Dinge am Laufen hast, bist du fast fertig. Und gerade USART ist nicht schwer, das kannst du direkt zum Ausprobieren nehmen. Statt LEDs blinken lassen.
Was die Entwicklungsumgebung für Linux und AVR angeht, gibt es ja mittlerweile das hier: http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab§ion=docs_introduction Gruss, ajax
Wenn Du mit deinem Computer Relais schalten willst, oder Eingänge lesen willst, wäre es das einfachste, wenn Du die parallele Schnittstelle (paralleler Druckeranschluß) verwendest. Den kannst Du auch von Deinem Betriebssystem leicht ansteuern.
Hier gibts die offizielle Doku zum Parallelportadapter für LM-Sensors: http://www.lm-sensors.org/browser/i2c/trunk/doc/i2c-pport Du musst halt das LM-Sensors installiert haben und dann noch das Modul i2c-pport laden. Steht aber alles in der Dokumentation von LM-Sensors. Hier stehen alle I2C-Chips und I2C-Adapter die von LM-Sensors unterstützt werden... ich hatte seinerzeit mal das "bttv" Modul verwendet. Interesannt ist aber auch das Vellemann K8000. Das I2C-Modem wird NICHT mit LM-Sensors funktionieren, da du keinen Treiber dafür hast. Jemand der sich mit dem Linux-Kernel auskennt schreibt zwar in 5Minuten den passenden Treiber dafür--- aber die Person muss man erstmal kennen. Einfacher gehts auf jeden Fall mit einem unterstüzten Modul wie das von ELV,Velleman oder das Parallelinterface. Gruß, SIGINT
Beispiele zur Ansteuerung des Parallelports unter Linux Der Port kann zur Ein/Ausgabe genutzt werden. Zusätzliche Augabeleitungen kannst du durch einen zweiten Paralleport erreichen. http://www.loetstelle.net/praxis/parallelport/parallelport.php http://www.mrunix.de/forums/archive/index.php/t-10577.html
Da muss ich mal schauen, ob ich das mit meinem Mainboard vereinbaren kann: http://www.loetstelle.net/content/praxis/parallelport/leds_3.jpg Sven
Für die ursprüngliche Aufgabe ist kein µC nötig. Das kann ein PC auch so. Als Startpunkt für deine Recherche empfehler ich: http://tldp.org/HOWTO/Coffee.html
Naja, funktionieren wird das wohl... aber mit I2C hat man ein paar Vorteile: Man kann später die Schaltung sehr einfach um IOs erweitern indem man einen weitern Portexpander an den Bus hängt. Benötigt man später mal den Parallelport, so kann man auf ein anderes I2C-Interface ausweichen. (z.B. auf das Interface von Vellemann oder sogar das einer Brooktree TV-Karte) Man kann weitere I2C-Slaves am Bus betreiben: Temperatursensoren, LC-Displays, AD-Wandler, etc. Und wenn man will, dann kann man den I2C-Bus sogar galvanisch trennen. Einzig der Preis ist ein Problem bei I2C: Die I2C-Slaves sind nicht ganz preiswert (1,80 für PCF8574) ... aber man könnte eventuell einen AVR als I2C-Slave betreiben, das kommt dann schon etwas preiswerter (1,70 für ATmega8 mit genug IOs) Gruß, SIGINT
D.h. also: SDA - connect to pin 14 (Auto Linefeed) SCL - connect to pin 16 (Initialize Printer) GND - connect to pin 18-25 +5V - use external supply (I use 5V from 3.5" floppy connector) ? Und ich brauche nur lm-sensors zu installieren ? Sven
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.