PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm unterbrechen durch Sensor?



Trabukh
06.02.2005, 11:47
Hallo!
Ich würde gerne einen CMY70 in meinen Bot bauen. Daher stellt sich für mich folgende Frage: Ist es möglich, im Programm an eine bestimmte Stelle zu springen, wenn der Analogwert des Sensors einen bestimmten Schwellwert überschreitet?

Gruß, Trabukh

coldfirev3
06.02.2005, 13:33
Natürlich gibt es Möglichkeiten, sogar mehrere........ist nur die Frage, wer schreibt das Programm wenn er sowas nicht weiß ?

Trabukh
06.02.2005, 14:16
Danke für deine Antwort. Ich lerne ja gerade noch, da könnte ich den einen oder anderen Tipp ganz gut gebrauchen. Könntest du mir vllt ein Stichwort oder soetwas geben, dann könnte mich schon mal in der BASCOM Hilfe nachgucken...

Gruß, Trabukh

emulein
06.02.2005, 23:30
Hallo Trabukh,

ich bin auch nicht so der Experte, aber vielleicht kannst du was mit anfangen.
Das Signal von deiner Lichtschranke über ein 7414, dann hast du eine
saubere Schaltschwelle für deinen Prozi. Von dort auf einen freien Portpin. Entweder den Port immer abfragen und sehen, ob sich was geändert, wenn ja, zu deiner Routine springen.
Oder du legst das Signal das vom 7414 kommt auf einen Interrupteingang (Datenblatt des Prozi, INT0, INT1), wenn das Signal anliegt springt der Prozi in die Interruptroutine (was dein Programm sein könnte).
Auf diesem Wege würde ich es versuchen, vielleicht geht´s auch einfacher,aber für beide Varianten solltest du alles hier im Forum finden.
Wenn gar nicht geht einfach noch mal posten.


Gruss Frank

Trabukh
07.02.2005, 06:37
Hallo!
Danke für deine Antwort. Aber eine Frage hätte ich da doch noch. Wie kann man bei diesem Trigger die Schaltschwelle einstellen? Ich tue mich leider immer noch schwer mit den Datenblättern. Da sind nur 6 Eingänge, 6 Ausgänge, VCC und GND...

Gruß, Trabukh

vish
07.02.2005, 08:43
Guten Morgen!

Wozu den 7414? Soweit ich weiß hat jeder ATmega an jedem Digitalport einen Schmitttriger (mit zwei oder drei "t"?) eingbaut, sodass wenn zum Beispiel 4 Volt anliegen, das Signal auch als logische 1 gewertet wird.
(siehe https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=6414&highlight=interner+schmitttrigger)

Grüße,
Jonas

P.S.: Die Schaltschwelle kannst du auf diese Art und Weise natürlich nicht selbst bestimmen.

m.artmann
07.02.2005, 09:16
Oder den Sensor gleich an einen Analogeingang des µC und die Schaltschwelle per Software festlegen.
Dabei kann man mittels eines zweiten Lichtsensors, der nur die Umgebungshelligkeit misst,
eine unterschiedliche Umgebungsbeleuchtung kompensieren.
D.h. ist es drinnen sehr hell ist die Schaltschwelle niedriger, bei Dunkelheit entsprechend höher.

Gruß
m.artmann

RCO
07.02.2005, 14:22
Oder den Sensor gleich an einen Analogeingang des µC und die Schaltschwelle per Software festlegen.

Wie geht das denn? Soweit ich weiß, gibt es für Analogeingänge nur 2 Interruptroutinene, eine wenn man den ADC auf free stellt. Dann wird nach jeder Wnadlung ein Interrupt ausgelöst und einen, der bei jeder Veränderung am ADC auslöst, was leider meißt ziemlich oft passiert. Kann man da eine Schwelle festlegen?

MFG Moritz

m.artmann
07.02.2005, 14:32
Von Interupt hat er doch nichts geschrieben. :-k
Ich dachte dabei eher daran dass er ganz normal seinen Sensor einliest
und mit einer IF...THEN oder SELECT CASE...CASE Anweisung verzweigen soll.

Sollte ich mich verlesen haben dann bitte ich um Entschuldigung.

Gruß
m.artmann

RCO
07.02.2005, 14:39
Sollte ich mich verlesen haben dann bitte ich um Entschuldigung.

Nein, geschrieben hat er das nciht, ich dachte nur, dass es der beste Weg wäre. Nichts für ungut. Hängt halt immer von der Programmlänge und der gewünschten Reaktionszeit ab, ob man IF bedingungen oder Interrupts verwendet.

MFG Moritz

Trabukh
07.02.2005, 15:40
Nagut, werde wohl auf Grund des Interruptes beim Trigger bleiben, aber wie macht man das denn nun?

Gruß, Trabukh