Forum: Mikrocontroller und Digitale Elektronik Kabellängen und ein Paar dinge mehr mit nem µController


von Tim (Gast)


Lesenswert?

Ich habe folgende Fragen: Ich hoffe man kann mir ein wenig helfen. Als 
Controller möchte ich vermutlich den AT-Mega 8 nehmen. Als Display soll 
ein Display mit 20x4 Zeichen sein.

- Wie kann man am einfachsten mit einem µC Spannung messen, im Bereich 
bis 15V?

- Muss ich bei mehren Servos am µC über einen Transistor schalten, also 
um den Controller nicht zu überfordern?

- Hat jemand schon mal eine Menüsteuerung über einen µController 
realisiert und kann mir jemand vielleicht helfen bei einem einstieg?

- Gibt es eine Maximallänge für 1-Wire Bus? Also sind bis 50m Länge kein 
Problem?

- Gibt es eine Maximallänge für den ISP - Anschluß bzw. den RS232 
Anschluß? Kann man dort auch mit etwa 50m Länge arbeiten oder ist dieses 
zu lang?



Michael

von Falk B. (falk)


Lesenswert?

@Tim (Gast)

>Ich habe folgende Fragen: Ich hoffe man kann mir ein wenig helfen. Als
>Controller möchte ich vermutlich den AT-Mega 8 nehmen. Als Display soll
>ein Display mit 20x4 Zeichen sein.

>- Wie kann man am einfachsten mit einem µC Spannung messen, im Bereich
>bis 15V?

Mit einem Spannungsteiler

>- Muss ich bei mehren Servos am µC über einen Transistor schalten, also
>um den Controller nicht zu überfordern?

Nein. Das Steuersignal braucht nicht viel Strom.

>- Hat jemand schon mal eine Menüsteuerung über einen µController

Ja.

>realisiert und kann mir jemand vielleicht helfen bei einem einstieg?

Schau dir ein paar Beipspiele an.

>- Gibt es eine Maximallänge für 1-Wire Bus?

Ja, so um die 1m.

> Also sind bis 50m Länge kein  Problem?

Wenn gleich es funktioniert, ist der 1-Wire Bus dafür nicht erfunden 
worden.

>- Gibt es eine Maximallänge für den ISP - Anschluß bzw. den RS232

Das sind zwei grundverschiedene Sachen. ISP ist meist sinnvollerweise 
auf 1-5m beschränkt, RS232 kann durchaus 100m überbrücken.

von Chris L. (kingkernel)


Lesenswert?

Falk Brunner schrieb:
>>- Gibt es eine Maximallänge für den ISP - Anschluß bzw. den RS232
>
> Das sind zwei grundverschiedene Sachen. ISP ist meist sinnvollerweise
> auf 1-5m beschränkt, RS232 kann durchaus 100m überbrücken.

Kommt dabei aber auch auf die Kabelart und die Übertragungsrate an. 
Wikipedia sagt dazu:
2.400    900 m
4.800    300 m
9.600    152 m
19.200   15 m
57.600   5 m
115.200  <2 m

http://de.wikipedia.org/wiki/RS232

von Tim (Gast)


Lesenswert?

Wo gibt es den Beispiele für die Sache mit der Menüsteuerung? Gibt es 
hier im Forum ein Bereich für sowas?

Und das max 1m Länge bei einem 1-Wire Bus wäre irgendwie doof. Weil ich 
möchte meine Wohnung per Netzwerkkabel duchverbinden und in jedem Raum 
ein Temp. Sensor zwischen packen. Also das ich die Temperatur für jeden 
Raum zentral abfragen kann und so würde eine Längere Kabellänge zusammen 
kommen.



Tim

von Falk B. (falk)


Lesenswert?

@  Tim (Gast)

>Wo gibt es den Beispiele für die Sache mit der Menüsteuerung? Gibt es
>hier im Forum ein Bereich für sowas?

http://www.mikrocontroller.net/articles/MenuDesigner
http://www.mikrocontroller.net/articles/Funktionszeiger_in_C#Men.C3.BCs_mit_Funktionszeigern

>Und das max 1m Länge bei einem 1-Wire Bus wäre irgendwie doof.

Nimm einen anderen Bus. Oder lebe ggf. mit vielen Störungen.

von Tim (Gast)


Lesenswert?

Ja gut, ich dachte, weil die Netzwerkleitung ja geschirmt ist, wäre das 
kein Problem. Aber da muss ich mir was dann mal überlegen.



Tim

von reverse (Gast)


Lesenswert?

oder bau dir eine Platine, die den Senor und einen µC hat. Dieser sendet 
dann auf einem Bus mit geeigneten Protokol, so das er auch größere 
Strecken überwindet. Irgend ein Master µC ämpfängt dann dessen Daten und 
verarbeitet sie. Nur wird dann die Platine mit Sensor auch versorgt 
werden müßen, entweder über ein Steckernetzteil oder einer Leitung die 
neben der Daten(bus)leitung veräuft.

von Stefan F. (sfrings)


Lesenswert?

RS-485 würde sich in deinem Fall anbieten. Deren symmetrischen Signale 
lassen sich über Netzwerk-Kabel problemlos leiten.

von Michael S. (rbs_phoenix)


Lesenswert?

Der PIC12F1840 () wäre z.B. passend (andere bestimmt auch, es soll kein 
Krieg ausbrechen). Der hat an Pin 2+3 TX/RX, also RS232/RS485/LIN und du 
hast noch andere PINs frei für einen One-Wire-Sensor. Wenn du aber noch 
etwas variable bist, was den Sensor angeht.. Es gibt vielleicht auch 
einen Sensor mit I²C oder SPI, den könntest du dann an Pin 5+6 bzw. Pin 
5+6+7 anschließen und kannst das SSP Modul benutzen. Das One-Wire 
müsstest du dann Softwaretechnisch lösen. Machbar aber I²C/SPI wäre 
sicher einfacher

von MaWin (Gast)


Lesenswert?

> Wie kann man am einfachsten mit einem µC Spannung messen,
> im Bereich bis 15V?

In dem man die Spannung mit einem Spannungsteiler durch 6 teilt,
also z.B. 50k und 10k, und dann von 0V bis 2.5V gegen die interne
Referenzspannung des ATmega8 misst.

> - Muss ich bei mehren Servos am µC über einen Transistor schalten,
> also um den Controller nicht zu überfordern?

Nein, der Indeximpuls darf direkt an den Servo gehen, da aber
Servos Motoren sind die die Versorgungspsananung extrem verbauen,
muß man auf perfekte Spannungsversorgung achten. am besten die
Spannugn des AVR aus einer anderen Batteri nehmen als die der
Servos, doer zumindest einem eigenen Spannungsregler, und nur
an einem Punkt (Masseanschluss) verbinden.

> - Hat jemand schon mal eine Menüsteuerung über einen µController
> realisiert und kann mir jemand vielleicht helfen bei einem einstieg?

Das ist doch sehr einfach. Du hast ein Display. Du brauchst nun
noch Tasten, 3 oder 4. Dann kanst du ein Programm das immer in
einer Schleife läuft, z.B. in 25msec ein mal rum (für die Servos..)
Dort kannst du die Tastenerkennung einbauen und bei jedem
Tastendruck die Anzeige weiterschalten.  In 'C':

uint8_t tasten,gedrueckt,position,menu;

position=0; // Grundstellung
menu=0; // Hauptmenü
for(;;) // Programmhauptschleife
{
  tasten=PIND; // Bis zu 8 Taster auf ein mal, liefern 1 wenn gedrückt
  gedrueckt=tasten&~gedrueckt;
  if(gedrueckt&1) // Taste '+', nächste Menüoption
  {
    position=(position+1)%10; // ggf. Maximalwert prüfen
  }
  if(gedrueckt&2) // Taste '-', vorherigee Menüoption
  {
    position=(position+9)%10; // gff. Maximalwert prüfen
  }
  if(gedrückt&4) // Taste 'Ok', Menüaktion
  {
    menu=aktion[menu][position]; // Tabelle sagt was zu tun ist
    position=0;
  }
  // ausgabe auf LCD: aktuelle Menü, aktuelle Position
  // mach was sonst in der Programm-Hauptschleife passieren muß
  gedrueckt=tasten;
   _delay_ms(25); // damit sie bestimmt länger dauert als Prellen
}


> - Gibt es eine Maximallänge für 1-Wire Bus? Also sind bis 50m
> Länge kein Problem?

Ein dickes Problem. Eher 1m.

> - Gibt es eine Maximallänge für den ISP - Anschluß ?
> Kann man dort auch mit etwa 50m Länge arbeiten

Nein.

RS232: Ja.

zu lang?

von Tim (Gast)


Lesenswert?

Danke für eure Zahlreichen Tips und Co.

Als Programmiersprache würde ich gern bei Bascom bleiben. Hätte ich 
vielleicht sagen sollen.

Und ich denke ich werde es mal Testen. Habe hier noch ein Ring mit 
Netzwerkkabel liegen. werde dort mal paar Meter mehr abrollen und dann 
an ein Ende den Temperatursensor DS18S20 dran packen und ans andere Ende 
ein ATMega8 mit LC Display.

Und sonst müsste ich mir überlegen, wegen der Lösung mit Seperaten 
Controller und Sensorplatinen.

Würde an sich was gegen ein Software Uart Schnittstelle Sprechen? Oder 
sollte ich lieber eine Hardware Uart nehmen?

Und das mit dem Servo hatte mit der eigentlichen Aufgabe nix zu tun. 
Diese Frage war eher allgemein.



Tim

von Tim (Gast)


Lesenswert?

Und ist es möglich, mehrere Module an eine Uart Schnittstelle zu packen? 
Also das die Module eine ID Bekommen und sobald der Master die ID 
sendet, erhält die Sensorplatine die ID und übermittelt Temperatur und 
ID.

Wenn das mit der Software Uart geht, könnte ich für die Sensorplatinen 
Attiny 13 nehmen.


Tim

von MaWin (Gast)


Lesenswert?

> Und ist es möglich, mehrere Module an eine Uart Schnittstelle zu packen?

Offiziell ?

Nein.

Mit Aufwand ?

Ja, wenn man abschaltbare RS232 Sender verwendet,
und ein Protokoll fährt, daß nur einer davon zum
Senden eingeschaltet ist.

Ist es sinnvolle, eine Standardschnittstelle so
unstandardgemäss zu verwenden ?

Nein.

RS485 kann alles von Haus aus

http://www.rn-wissen.de/index.php/RS485

von Tim (Gast)


Lesenswert?

Vielleicht sollte ich noch zusätzlich die Information geben, ich will 
insgesamt 9 bis 10 Temperatursensoren in diesem System Abfragen und über 
einen LC Bildschirm an der MainUnit ausgeben lassen.


Tim

von Tim (Gast)


Lesenswert?

So habe es mal getestet mit einem Langem Kabel und leider kam überhaupt 
nix. Ich habe verschiedenes getestet.

1. Pulldown Widerstand kurz hinterm Port vom 1-Wire Bus und dahinter 
habe ich die Verbindungsleidung gehängt. Habe das Kabel nicht abgerollt, 
hoffe das war kein Problem?

2. Diesmal habe ich den Pulldown-Widerstand direkt am DS18B20 gepackt. 
Also Widerstand zwischen Datenleitung und Datenausgang vom 
Temperaturchip. Den so klappte es als ich den Temperaturchip direkt an 
den µC gepackt habe.

Der Widerstand hatte ein Wert von 10kOhm.

An sich wollte ich den Attiny 2313 als Controller Chip nutzen, aber 
folgende Chip Family befindet sich in meinem Sortiement:

1 x Atmega 32
2 x Atmega 8
1 x Atmega 48
3 x Attiny 2313
1 x Attiny 85
1 x Attiny 44
2 x Attiny 13

Vielleicht eignet sich ein anderer Besser als Main Unit? Würde notfalls 
auch noch ein anderen dazu holen, wenn der besser geeignet wäre.

Ich hoffe jemand kann mir da noch ein netten Tip geben. Wäre schon 
klasse, wenn das System klappt.


Tim

von Tim (Gast)


Lesenswert?

Sry, eines habe ich vergessen zu sagen, es ist etwas Störend, wenn man 
im Netz überall liest, 1Wire Bus wäre möglich 100-500m möglich ohne 
Probleme.


Tim

von Falk B. (falk)


Lesenswert?

@  Tim (Gast)

>1. Pulldown Widerstand kurz hinterm Port vom 1-Wire Bus und dahinter

Was nicht sonderlich sinnvoll ist, weil 1wire einen Pull UP braucht!

>habe ich die Verbindungsleidung gehängt. Habe das Kabel nicht abgerollt,
>hoffe das war kein Problem?

Nein.

>Der Widerstand hatte ein Wert von 10kOhm.

ISt OK, kann man ich glaube bis auf 2 oder sogar 1k runtergehen.

>Vielleicht eignet sich ein anderer Besser als Main Unit?

Vollkommen egal.

>Ich hoffe jemand kann mir da noch ein netten Tip geben.

Teste es erstmal mit 1m Kabel. Wenn es läuft, nimm längere Kabel.

von Tim (Gast)


Lesenswert?

Sry ich meinte auch nen Pull Up. Da hab ich mich etwas vertippt.

Ist bischen stressig zum teil gerade etwas.


Tim

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.