Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller und Linux


von Isak S. (Firma: Youzone) (pirat) Benutzerseite


Lesenswert?

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

von Andreas (Gast)


Lesenswert?

Ich weiß, es klingt ungewöhnlich:
Lies einfach die entsprechenden Artikel im Wiki auf dieser Seite...

von Stefan Salewski (Gast)


Lesenswert?

>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

von Malte _. (malte) Benutzerseite


Lesenswert?

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).

von Sigint 112 (sigint)


Lesenswert?

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

von dins (Gast)


Lesenswert?

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.

von Isak S. (Firma: Youzone) (pirat) Benutzerseite


Lesenswert?

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

von Malte _. (malte) Benutzerseite


Lesenswert?

> 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 :-)

von dins (Gast)


Lesenswert?

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.

von ajax (Gast)


Lesenswert?

Was die Entwicklungsumgebung für Linux und AVR angeht, gibt es ja 
mittlerweile das hier:

http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab&section=docs_introduction

Gruss,
ajax

von wb1 (Gast)


Lesenswert?

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.

von Sigint 112 (sigint)


Lesenswert?

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

von wb1 (Gast)


Lesenswert?

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

von Isak S. (Firma: Youzone) (pirat) Benutzerseite


Lesenswert?

Da muss ich mal schauen, ob ich das mit meinem Mainboard vereinbaren 
kann:

http://www.loetstelle.net/content/praxis/parallelport/leds_3.jpg

Sven

von Name (Gast)


Lesenswert?

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

von Sigint 112 (sigint)


Lesenswert?

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

von Isak S. (Firma: Youzone) (pirat) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.