PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tastsensor wo anschließen? Wie ansteuern?



King10002
27.07.2008, 20:43
Hallo Roboterfreunde,

ich habe einen RN-Controle hier zu Hause bei mir liegen. Meine ersten Programe, die Motoren in Bewegungen setzen, laufen soweit.

Ich habe mir bei Conrad nun einen Tastsensor gekauft. (Bild)
Mit den drei Anschlüssen habe ich das eigentlich verstanden. Je nachdem welchen Anschluss man nimmt werden entweder +5V oder ground durchgeschaltet.
Wo werden die denn angeschlossen?
Mir wurde gesagt an PortB C oder D (Bild).

Die Slots sind aber 10polig. Welche pins muss ich nehmen?


Wie kann ich überprüfen, ob ich den richtig angeschlossen habe?
Also wie kann ich den Sensor in meinem C Code anreden?



Mit freundlichen Grüßen

King10002

Hubert.G
29.07.2008, 12:45
Um zu wissen welche Pin der 10pol Buchse du nehmen musst, solltest du dir den Schaltplan und nicht den Aufbauplan ansehen. Welches Port du nimmst bleibt dir überlassen. Du solltest dir vielleicht überlegen was du vorhast damit du dir nicht allzuviel selbst verbaust.
Für die Tastsensoren würde ich vorschlagen das du diese so anschaltest das sie im gedrückten Zustand GND durchschalten. An dem jeweiligen PortPin musst du den internen PullUp aktivieren.

King10002
29.07.2008, 20:35
Hallo Hubert G
Danke für deine Antowrt.
Den Schaltplan habe ich gefunden:
https://www.roboternetz.de/wissen/images/c/c6/Rncontrol1.4schaltplan.gif
werde aber ganz und gar nicht schlau daraus :)

Wie sehe ich denn nun mithilfe des Schaltplans welche ich nehmen muss?

Und weißt du wie genau die Zeile im C Code aussehen muss?


Freundliche Grüße

King10002

Hubert.G
29.07.2008, 22:12
Du siehst im Schaltplan die Ports. Da suchst du dir auf einem Port zwei freie Pin aus. Auf der 10pol Buchse siehst du dann die Nummer. Nehmen kannst du alles was frei ist.
Der Code sieht in etwa so aus:
if ( !(PINB & (1<<PINB2)) ) {
/* Aktion */
}
Ich würde dir aber ein Tutorial anraten da die Kontakte auch prellen, zB. hier:
www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Eing.C3.A4nge_.28Wie_kommen_Signale_in_de n_.C2.B5C.29

King10002
30.07.2008, 19:16
Hello again,

Trifft dieses Tutorial denn auch auf meinen µC zu? Das ist ja schon was anderes als C Programmierung für Windows Anwendungen :)

Könnte ich deine E-Mailadresse bekommen?
Könntest du die an marlohaering@googlemail.com schreiben?

Ich bräuchte dabei dich etwas Hilfe.
Ist es nun egal welche Pins ich nehme?
Auf dem Schaltplan sind auch irgendwie für PortB nur 8 Pins zu sehe. Wie kommt das?

Freundliche Grüße

King10002

Hubert.G
30.07.2008, 20:56
C-Programmierung für PC und für µC unterscheiden sich schon etwas.
Welchen Compiler verwendest du für den µC?
Womit überträgst du deine Daten in den µC?
PortB hat nur 8 Pin, auf der Buchse ist noch VCC und GND, nimm dir welche die nur auf die Buchse gehen.
Mich erreichst du mit meinem Namen vor dem schorsch.at

King10002
30.07.2008, 22:02
Ich verwende WinAVR.
Übertragen tue ich mit PonyProg.

Also es ist doch so dass die Pins nicht alle glech sind oder?
Jeder Pin hat doch seine eigene Aufgabe oder?

Und woher weiß ich jetzt welchen ich nehmen muss?
Die sind nicht nummeriert und nichts :D

Ich check das noch nicht ganz :)

Gruß

Marlo

Hubert.G
31.07.2008, 09:42
Die Port A bis D sind alle I/O-Port, dabei unterscheiden sie sich nicht. Allerdings haben sie alle noch Spezialfunktionen. PortA ist z.B. der ADC-Port, PortB ist für SPI und Taktein- und Ausgänge der Timer usw. Das sind alles Hardwareseitig vorgesehene Funktionen die man über das Programm aktivieren kann wenn benötigt.
Wenn du jetzt einen Pin mit deinem Sensor belegst, solltest du dir überlegen ob du die Sonderfunktion die auf dem Pin noch liegt benötigst oder nicht.
Das ist dein Auswahlkriterium und sonst nichts.
Die Pin sind schon nummeriert, PortB0 bis PortB7 liegen auf der Buchse von 1 bis 8, GND ist 9 und +5V ist 10.
Ich würde dir zum AVR-Studio raten, darin kannn man seine Programme sehr schön simulieren.

Panzer4000
31.07.2008, 14:04
Hallo King 1002,

habe Deine Probleme gelesen und empfehle Dir die 10 poligen Buchsen erst mal außer acht zu lassen denn auf den Board sind alle Pin in Steckerbuchsen um den µC herausgeführt.

Da Du nur vermutlich einen Taster anschließen willst nimm ein Steckbrett,
schließe den Schließer mit einen Pol an +5V vom RN Control und den anderen an den Pin den du verwenden willst( Pinb.0). Es geht jeder Pin von jeden Port.

Also zum Beispiel Pinb.0
Verbinde dann den Pinb.1 mit einer LED auf dem RN Control und dann schreibe ein Programm wenn Pinb.0 = 1 dann Pinb.1=1.
Dann Betriebsspannung anlegen und beim betätigen des Tasters leuchtet die LED.

Im Datenblatt vom µC findest Du die verschiedenen Verwendungen vom
den Pin's des Atmega 32.
Da Du beim programmieren( Programmerstellung) die Verwendung der Pin's oder Port's ja deklarieren musst, besteht nach der Deklaration dann der Verwendungszweck fest.
Also beim erstellen des Programm's vorher überlegen was gebraucht wird.
Wenn Du zum Beispiel den PD0 verwendest steht er Dir dann nicht mehr als RXD ( hardwareseitig festgelegt)zur Verfügung.( Man kann aber auch softwareseitig einen RXD einrichten)

MfG Panzer4000

King10002
31.07.2008, 18:23
Hallo danke erstmal wieder für die Anwotworten.

So langsam kann ich mir vorstellen wie es aussehne muss.
Ich wollte aber mehr als einen Tastsensor anschließen. Warscheinlich werden es so 2-3.

Die Bezeichnung eurer Pins kann man die auf dem Schaltplan finden.
Also mir fällt es extrem schwer irgendwelcdhe Bezeichnungen auf dem Schaltplan auf meinem µC wiederzufinden.


empfehle Dir die 10 poligen Buchsen erst mal außer acht zu lassen denn auf den Board sind alle Pin in Steckerbuchsen um den µC herausgeführt.

Damit kann ich nicht so wirklich was anfangen. Meinst du damit diese ganzen vielenen kleinen Steckplätze um den schwarzen Speicher rum?

Und nochmal zur Wiederholung also:
In den Bibliotheken sind vorgefertige Funktionenen, die einzelne Zustände der Pins der Ports verarbeiten. Und man muss dann eben gucken, dass man den Tastsensor nicht da anschließt, wo sich Funktionen befinden die man noch braucht?
Habe ich das so richtig verstanden? Wenn ja, woher weiß ich dann wo sich welche Funktionen hinter verbergen?


Grüße Marlo

pongi
31.07.2008, 18:39
Schau dir mal einen AVR Datenblatt mal näher an, vor allem den Absatz Pin Configurations.

Alle Pins können als normale IOs verwendet werden, bei manchen gibts spezielle Hardwarefunktionen, die bei Bedarf benutzt werden.

Ein Beispiel: wenn du keine serielle Kommunikation haben willst, kannst du die Pins TxD und RxD als IO Pins verwenden, ansonsten eben für die Kommunikation. Diese Auswahl musst du also für dein projekt individuell im Voraus planen.

Bei der Initialisierung in der Software kannst du diese Zusatzfunktionen ein und ausschalten.

Konklusion: es ist völlig egal, wo du den Tastsensor anschliesst, solange du keine Spezialpins nimmst, die du später brauchst. Wenn du keine externe Interrupts für was anderes brauchst, und eine schnelle Reaktion benötigt wird, kannst du die Tastsensoren an die Interrupteingänge legen, damit brauchst du in der Software keine Busy-Wait-Loop, was für die Auslastung positiv ist.

Du solltest dich aber auf alle Fälle ein bisschen mehr ins Thema einarbeiten, bevor du mit was kompliziertem anfängst. Schau mal ins RN-Wissen, bzw. das AVR-Tutorial unter mikrocontroller.net

Panzer4000
31.07.2008, 20:35
Hallo,

Also beginnen wir mit dem Exkurs.

1. Was soll den mit dem RN gemacht werden, oder besser was soll es machen.

Da du Taster anschließen willst, gehe ich davon aus, das irgend jemand oder irgend einer diese Tasten betätigen soll.

Wenn der Taster dann geschlossen ist ( oder geöffnet hat) soll eine Funktion ausgelöst oder ein Signal(LED), angeschaltet werden.

Soll dieser Vorgang angezeigt werden, wenn ja wo .Am Computer über
R232 oder über LCD.(es gibt noch mehr aber später)
Den Anschluss R232 findest du auf den RN oben( oben ist man kann die Schrift auf RN lesen)als R232 geschrieben.

Richtig hast Du geschrieben, das sind die vielen kleinen Steckplätze um den Atmega 32 herum. Diese ... Steckplätze sind auf den RN danach an die 10 poligen Wannenstecker geführt.( nicht alle, denn einige erfüllen noch Funktionen auf den RN und sind dann auf die Wannenstecker bzw.
Stecker wie R232 geführt.

So nun musst du eine Beschreibung Deines Programms erarbeiten und dann wirst Du ganz schnell erkennen, dass Dein RN ein ganz furchbar gutes Teil ist was vieles kann.

Da ich die Bauteile gesehen habe die Du hast, vermute ich, dass es Prallkontakte werden sollen und die Fotowiderstände als Helligkeitssensoren gebraucht werden sollen.

Also schreibe was es werden soll, dann sollte die Entwicklung möglich werden. Am konkreten Objekt lässt sich so etwas entwickeln.

MFG Panzer4000










Wenn das erst einmal klar ist dann geht es

King10002
31.07.2008, 21:51
Also was soll es werden?

Es soll am Ende eine Laufkatze werden. Ein kleiner Kran der auf eienr recht beschaulichen Fläche agieren soll. Ich habe dazu mal ein Foto aus meiner kleinen Animation angehängt (Bild).

Dieser Kran soll dann ein kleines Spiel mit einem Menschen spielen. Ein großer Teil des Gerüstes steht eigentlich schon.

Das Hauptproblem besteht eben darin diese ganze Kabulage noch abzuwickeln.

Die Tastsensoren sollen am Anfang der beiden Achsen befestigt werden. Der Roboter soll dadurch erkennen wann er sich im Ursprung des "Koordinatensystems" befindet.


Ich werde mich jetzt erstmal ein wenig in die Tutorials einlesen.

Mich machen diese ganzen Pin Bezeichnungen verrückt.
Ich bin mehr der Coder ;)

Mein Traum wäre jetzt erstmal den Tastsensor erfolgreich anzuschließen und erfolgreich zu testen durch irgendein Programm.


Gruß
Marlo

Panzer4000
01.08.2008, 14:15
Hallo Marlo,

Hier das erste Programm
Da ich Bascom Programmiere habe ich die HEX mitgesendet.
Für Marlo
' Auf Tastensensordruck LED einschalten
'Hardware: Taster an PD5, LED an PD6
'----------------------------------------------------------
$regfile = "m32def.dat" 'ATmega32-Deklarationen
$crystal = 16000000 'Quarz: 16000000 MHz
'
Ddrd = &B01000000 'Pin PD6 Ausgang, Rest Eingang
Portd = &B0010000 'PullUp von Pin PD5 aktivieren
'
Do
If Pind.5 = 0 Then 'Wenn Taster (Pin PD5) gedrückt(Kontakt geöffnet am Tastsensor)
Portd.6 = 1 ' LED (Pin PD6) an
Else 'Wenn Taster nicht gedrückt (Kontakt geschlossen am Tastsensor)
Portd.6 = 0 ' LED aus
End If
If Pind.3 = 0 Then
Portd.4 = 1
Else
Portd.4 = 0
End If
Loop
End
'
Hexfile

: 100000000c942a001895000018950000189500001f
: 10001000189500001895000018950000189500002c
: 10002000189500001895000018950000189500001c
: 10003000189500001895000018950000189500000c
: 1000400018950000189500001895000018950000fc
: 10005000189500008fe58dbfc0e4e8e34e2e88e0e0
: 100060008ebfd8e0f8e05f2eeeeff7e0a0e6b0e05c
: 1000700088278d933197e9f7662480e481bb80e17e
: 1000800082bb0027a0e3b0e08c9185fb0ef401e079
: 1000900040e0041711f00c945000969a0c94510013
: 1000a00096980027a0e3b0e08c9183fb0ef401e06a
: 1000b00040e0041711f00c946000949a0c946100d5
: 1000c00094980c944100f894ffcf3197f1f708957c
: 0c00d000689462f80895e89462f80895be
: 00000001ff

brauchst Du nur in Pony zu kopieren.
Du musst nur noch auf dem RN den DIP Schalter 1 auf 1 schalten.
Von den Steckplätzen um den Atmege 32 herum brauchen wir nur die mit JP5 gekennzeichneten Buchsenreihe und davon vom Quarz aus gesehen die Buchsen 6 also Pin6 des Portd und Pin 5 des Portd.
Pin 6 ist Ausgang
Pin 5 ist Eingang
da der Atmega eigene PullUp Widerstände hat wurde dieser an Pin 5 des Portd aktiviert.

Nun verbind Pin 5 mit Kontakt am Tastsensor( geschlossen )
und Pin 6 mit
der Buchse am DiP Schalter 1. Plus von dem RN an den Mittelkontakt des Tastsensor.
Tastsensor drücken LED 1 leuchtet.

viel Spaß.


Gruß Panzer4000

King10002
01.08.2008, 23:12
Okay das klingt schonmal recht nice :D

Es wäre für mich noch sehr hilfreich wenn du vielleicht in Paint oder so die Pins die du meinst einzeichnest und die verbindest und dazwischen Schalter oder sowas schreibst.

Das wäre dann Idiotensicher. Ich hab immer Angst was kaputt zu machen.
Hier im Anhang nochmal den Bestückungsplan.

Ich werde aber so schonmal ein bisschen probieren vielleicht treffe ich ja die Richtigen.

Freundliche Grüße
Marlo

King10002
01.08.2008, 23:16
Hab mir das gerad nochmal durchgelesen.

Also ich glaube ich habs begriffen :D

Das mit Paint hab ich gerad zum eigenen Verständnis mal gemalt.

Das sah bei mir so aus.

Ich weiß aber nicht genau wo + nun ist.

Geh nun erstmal schlafen.

Grüße

Marlo

Panzer4000
02.08.2008, 09:06
Hallo Marlo,

hoffe Du hast gut geschlafen?

In Deiner Skizze hast Du am PortD den Taster auf Pin 4 und die LED an Pin 5
rücke beide einen Pin nach C17 am RN denn am PortD( sowie an allen) beginnt mit Pin 0(Null) und bis Pin 7.PD0 ist neben dem Quarz eingezeichnet.

Mein Fehler Deine Frage wo ist +(Plus) muss minus - heißen(ich Fehler)
wird am Ausdang der 5V Spannung am RN links unten am RN sind zwei
Steckerkontakte mit JP8 bezeichnet an denen GND und +5V stehen.

Der Mittelkontakt des Tastsensor wird an GND geklemmt.Passiert zwar nichts wenn Du an + klemmst, geht aber nicht!

Eine Frage mit welchen Programmer arbeitest Du und in welcher Sprache?

Gruß Panzer4000

King10002
02.08.2008, 10:12
SO gerd aufgestandne ich wer das mal beim Frühstück ausprobieren.

Hast du MSN?

Du kannst mir deine msn Adresse per e-Mail schicken oder posten.

marlohaering@googlemail.com


So bin ich ja mal gespannt... :D

Freundliche Grüße

Marlo

King10002
02.08.2008, 10:50
Habs probiert das Programm erfolgreich übertragen, ABER ;)

die LED macht nichts.

DIese komischen Lochdinger um den schwarzen RN rum sind mir ein bisschen susbekt. Wie sollte man die denn da anschließen?

Ich hab jetzt einfach Kabel entisoliert, also diese Gummirand weggemacht und da reingestopft.
^^

Geht das auch noch irgendwie anders?

Grüße

Marlo

Panzer4000
02.08.2008, 17:01
Hallo,

habe Dir Mail geschrieben mit Adresse.
Geht auch anders.
Du nimmst eine Wannenbuchse 10 polig.
Lötest an jede Buchse einen Draht oder klemmst eine 10 polige Flachband ein.
isolierst dann am anderen Ende die Drähte ab und nun hast Du das gleiche wie wenn Du die Buchsen verwendest.


Gruß Panzer 4000