Pages: [1]   Go Down
Author Topic: Mit 74hc165 Sharp Sensor auslesen  (Read 1088 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 1
Posts: 91
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,
ich versuche gerade mein Sensor, den ich im letzten Post gebaut habe zu erweitern
(http://arduino.cc/forum/index.php/topic,110628.0.html),
damit ich später einmal mehrere Sensoren gleichzeitig laufen lassen kann.
Den 74hc165 habe ich bei Conrad bestellt. Leider sind im Datenblatt widersprüchliche Informationen zu entnehmen:

http://www.produktinfo.conrad.com/datenblaetter/150000-174999/164453-da-01-en-74HC165.pdf

Schaubild PIN CONNECTIONS (Seite 1):
Clock Pin 2
Complementary Output PIN 7
Serial Output PIN9

Schaubild PIN DESCRIPTION (Seite 3):
Clock Pin 9
Complementary Output PIN 2
Serial Output PIN 7

Ich vermute mal Pin Description ist die richtige Belegung?!


Um die Sensoren auszulesen habe ich mir folgendes überlegt:
Ich nehme über den 8 Bit Schieberegister die Signale auf. Das Signal kann nur High oder Low sein demzufolge würde ich mit 8 Sensoren an einem 74hc165 256 Kombinationen auslesen können.
Werden nun zum Beispiel Signale am Eingang 1 und 4 wahrgenommen sollte der Wert 00001001 eingehen (über den ShiftIn Befehl?). Mit diesem Wert würde ich dann ein genauen Befehl an Leds zuweisen die bei bestimmten Werten anspringen sollen, . Hab ich das Prinzip richtig verstanden? Ich bin mir nicht so sicher.. Um die Schaltung zu testen habe ich eine Led am Pin 3 angebracht die aufleuchten soll, wenn der Sensor ein Signal registriert.



Mein Code => Zuerst die Deklaration des Schieberegister und der Led:
Code:
const int dataPin = 11;
const int clockPin = 12;
const int latchPin = 13;
const int ledPin =  3;

byte switchVar1 = 72; //01001000 habe gelesen man sollte es möglich zuerst nicht auf null lassen, da es zu Problemen kommen kann


void setup() {
Serial.begin(9600);

pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, INPUT);
pinMode(ledPin, OUTPUT); 

}

Soweit ok denke ich. Jetzt die Loop-und ShiftIn Funktion (soll ich diese Überhaupt benutzen? Wie genau programmiere ich sie damit sie genauso agiert wie oben beschrieben?). Ich finde wenige Gute Anleitungen, die meisten sind für den 74hc595. Ich habe jetzt alles irgendwie versucht aber so richtig klappen will es nicht. Der Sensor funktioniert, zumindest ging die Led kurz aus, wenn ich in die nähe der IR LED komme aber sonst Blinkt sie nur wild herum:
Code:
void loop() {

digitalWrite(latchPin,0);
delayMicroseconds(20);
digitalWrite(latchPin,1);


switchVar1 = shiftIn(dataPin, clockPin);
delay (1);
if (switchVar1>250) {
digitalWrite(ledPin, LOW);
}
else {
digitalWrite(ledPin, HIGH);
}
}


byte shiftIn(int myDataPin, int myClockPin) {

  int i;
  int temp = 0;
  int pinState;
  byte myDataIn = 0;

  pinMode(myClockPin, OUTPUT);
  pinMode(myDataPin, INPUT);

  for (i=7; i>=0; i--)
  {
    digitalWrite(myClockPin, 0);
    delayMicroseconds(0.2);
    temp = digitalRead(myDataPin);
    if (temp) {
      pinState = 1;
      myDataIn = myDataIn | (1 << i);
    }
    else {
      pinState = 0;
    }
    digitalWrite(myClockPin, 1);

  }
  return myDataIn;
}
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21869
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja, das Datenblatt ist zwiespältig. Versuchs mit diesem: http://www.nxp.com/documents/data_sheet/74HC_HCT165.pdf

http://arduino.cc/playground/Code/ShiftRegSN74HC165N
http://raynormonome.blogspot.it/2008/06/74hc165-shift-in-test-code.html

Grüße Uwe
Logged

0
Offline Offline
Jr. Member
**
Karma: 1
Posts: 91
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich weiß nicht warum aber der Monitor spuckt mir seltsame Sachen aus. Obwohl nur der PIN 1 des Schieberegister belegt ist zeigt der Monitor Alle Werte auf High.


Ich habe gelesen es das ein Pull Down oder ein Kondensator von nöten ist, kann ich damit dieses Problem lösen?
Gruß
« Last Edit: June 25, 2012, 04:25:23 pm by Gibsonuser » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21869
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die Eingänge des 74hc165 dürfen nicht unbeschalet bleiben. Die Eingänge die Du nicht benutzt mußt Du mit einem Pullup oder einem Pulldown Widerstand auf einen definierten Pegel legen.
Grüße Uwe
Logged

0
Offline Offline
Jr. Member
**
Karma: 1
Posts: 91
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Müssen die Eingänge an denen der IS471 angeschlossen sind auch mit so einem Widerstand verbunden werden? Was meinst du mit definiert? Einen Widerstand der pro Pin nicht mehr als 20ma abgibt (250 Ohm Widerstand) oder einen relativ hohen Widerstandswert 10kOhm?
Gruß
Logged

0
Offline Offline
Jr. Member
**
Karma: 1
Posts: 91
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe an jedem Ausgang, der nicht belegt ist einen 10kOHm Pulldown Widerstand angebracht der zu Ground führt. Der Eingang des Sensor hat kein Pulldown Widerstand. Sofern ich jetzt nun die Sensoren an den restlichen Eingängen anbringe kann ich die Pulldown Widerstände entfernen sehe ich das richtig?
« Last Edit: June 26, 2012, 12:27:46 pm by Gibsonuser » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21869
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Müssen die Eingänge an denen der IS471 angeschlossen sind auch mit so einem Widerstand verbunden werden? Was meinst du mit definiert? Einen Widerstand der pro Pin nicht mehr als 20ma abgibt (250 Ohm Widerstand) oder einen relativ hohen Widerstandswert 10kOhm?
Gruß
10 kOhm reichen.
Der Sensor braucht keinen Pulldown oder Pullup Widerstand da er einen internen hat.
Grüße Uwe
Logged

0
Offline Offline
Jr. Member
**
Karma: 1
Posts: 91
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ist es möglich den Erfassungsbereich der Sensoren zu erhöhen momentan liegt der bei <2cm 5-8 cm sind mein Ziel. Liegt es daran das die IR Led zu wenig Strom bekommt? Hilft vielleicht ein ULN2803?
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21869
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

2cm sind wenig
Benutzt Du den Sensor als Reflexionslichtschranke?

http://www.kreatives-chaos.com/artikel/abstandssensor-mit-is471

Grüße Uwe
Logged

0
Offline Offline
Jr. Member
**
Karma: 1
Posts: 91
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja benutze ich , deswegen habe ich mich gewundert.. Ansonsten läuft auch alles soweit sehr zuverlässig nur 2 cm sind sehr wenig. Gibt es eine einfachere Lösung als ein Transistor zusätzlich einzubauen? Der Uln2803 geht nicht?
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21869
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

16 Transitoren in einem Gehäuße sind Dir einfacher als 1 Transistor?

Nein der ULM2803 geht nicht. Bei der Schaltung von http://www.kreatives-chaos.com/artikel/abstandssensor-mit-is471  brauchst Du einen PNP Transitor und keinen NPN Darlington.

Grüße Uwe
Logged

0
Offline Offline
Jr. Member
**
Karma: 1
Posts: 91
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Werden ja später mehr als 16 sensoren dementsprechend weniger Lötarbeit.
Dumme Frage auf der Seite benutzen die einen 2N3906 Transistor, funktioniert der denn auch mit dem Arduino aufgrund der negativen Spannung von -5V ? Oder habe ich etwas bei dem Aufbau zu beachten?
Schonmal ein großes Dank von mir!
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21869
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

wo sind die -5V?
Logged

0
Offline Offline
Jr. Member
**
Karma: 1
Posts: 91
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

steht auf der von dir geposten Seite bei den Kommentaren (Post 3 und 4)
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21869
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Du mißt -5V wenn Du den Pluspol des Multimeters an Masse anschließt und den Minuspol an +5V.

Das Vorzeichen ist bedingt durch die Definition des Bezugsystems. Du brauchst keine negative Spannung.
Grüße Uwe
Logged

Pages: [1]   Go Up
Jump to: