Liste der Anhänge anzeigen (Anzahl: 1)
Suche einfache Ultraschall Empfänger + Sender (halbe HC-SR04)
Hallo,
ihr kennt ja mit Sicherheit die HC-SR04 Module:
Anhang 29026
Das sind Ultraschall Distanzsensoren, die einen high-Pegel für die Laufzeit des Tons (Sender -> Gegenstand -> Empfänger) ausgeben.
Was ich jetzt suche sind im Prinzip halbe HC-SR04:
- Sender Modul: Sendet einen Ultraschallton solange an einem Pin high anliegt
- Empfänger Modul: Pin high solange dieser Ultraschallton empfangen wird
Das ganze sollte 5V kompatibel sein und sich in seiner Komplexität auf die aufgeführten Punkte beschränken (Hintergrund ist, dass ich mich mit der Erzeugung des Tons als auch der Filterung des empfangenen Tons nicht befassen möchte). Sender und Empfänger dürfen auch ein einziges Modul sein, aber ich muss beides unabhängig ansteuern/auslesen können (Ich möchte via Ultraschall u.a. einige Bytes schicken)
Ich dachte sowas schon mal irgendwo gesehen zu haben, kann jetzt aber nichts derartiges finden...
Würde mich über den ein oder anderen Tipp freuen
Simon
Liste der Anhänge anzeigen (Anzahl: 1)
Also einfache Abstandsmessung klappt mehr oder weniger:
Anhang 29027
Allerdings gibt es einige Probleme, vor allem hinsichtlich der Datenübertragung:
- Die Empfängerkapsel hat anscheinend relativ viel Masse, d.h. wenn der Ton kommt braucht sie Zeit um anzuschwingen (ich vermute ein Grund warum der µC zu viel Abstand anzeigt) und wenn der Ton endet schwingt sie sehr lange nach
- Alles muss extrem schnell und auf die 2-3 µSekunden genau gehen. Ich glaube ich muss mich doch in Assembler einarbeiten.. (Einfach PWM mit Timer geht für Datenübertragung schlecht, weil man schlecht die Schwingungen zählen kann. Auch sollten nacheinander folgende highs des Datenstroms die gleiche Phasenlage haben, damit der Empfänger einfach weiterschwingen kann (sonst geht die Amplitude erst durch 0) und das ist schwierig wenn sich schon einzelne C-Befehle (z.B. Jump+for-Abfrage) als Phasenverschiebung bemerkbar machen (und man weis nicht wie lange die Befehle genau dauern))
- Der angebliche max232a (http://uglyduck.ath.cx/HC-SR04E/HC-SR04.svgz) ist bei mir keiner (hat auch keine Beschriftung..). Weder ladungspumpt noch invertiert er das Signal. Ich habe nachgemessen -> die Ein- und Ausgänge sind einfach kurzgeschlossen :mad::mad::mad:
Ich glaube ich mache gleich ein eigenes Design... (BTW hier gibts ein sehr gutes Datenblatt zu solchen Kapseln: http://www.reichelt.de/Sensoren/MUS-...SET=16&WKID=0& Daran werd ich mich wohl orientieren )
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Zitat von
Peter(TOO)
Was spricht gegen eine Amplitudenmodulation des Sendesignals?
Am Anfang dachte ich, dass es einfach zu lange dauert bis Amplitude der schwingenden Empfängerkapsel wieder runtergeht. Aber eine Messung zeigt, dass es mit ~ 1Bit/ms gehen könnte:
Anhang 29030
Man kann den Nachteil dieser Emfpänger für Abstandsmessungen sehen: Man kann nicht genau sagen wann der Ton beim Empfänger angekommen ist, da die Amplitude nur langsam ansteigt. Das macht die Abstandsmessung ungenauer (die Abweichung von ~1cm im letzten Bild hängt glaube ich damit zusammen. Warscheinlich wird im orignalen Controller des Moduls ein Pauschalwert abgezogen, der der Zeit enstpricht die der Sinus am Emfpänger braucht um als Signal (also kein Noise) erkannt zu werden)
Vielen Dank für die Beschreibung zur Umsetzung einer Amplitudenmodulation! (In die Richtung geht auch mein Ansatz unten)
Zitat:
Zitat von
PICture
Dann müsste man, wie im Datenblatt (DB):
http://www.micropik.com/PDF/HCSR04.pdf mit Pegelwechsel beim Empfänger immer bis zum "Anschwingen" und "Ausklingen" abwarten bzw. schnelle Datenübertragung mit anderen Wandler ohne schwingender Masse z.B. LED + Fotosensor versuchen.
Also Akustische Datenübertragung möchte ich nutzen, weil ich gleichzeitig die Laufzeit zur Berechung des Abstands brauche. Zwar währe ein zweiter Kanal zur Datenübertragung denkbar (allerdings dann gleich Funk, weil nicht immer gegeben ist dass der Lichtstrahl nicht unterbrochen wird (wird für draussen)), aber beides in einem wäre mir natürlich lieber.
Zitat:
Es könnte auch sein, dass die Chinesen zuerst die Bezeichnung entfernt haben und danach verkehrten IC eingelötet haben bzw. als Schutzmasnahme gegen Kopieren ein paar Brücken in Kunststoff als IC versteckt haben.
Ich vermute, dass irgend ein Chinesischer Hersteller das Modul nachgebaut hat und für billig billig den falschen MAX232 aufgesessen ist. Beim Test hats trotzdem funktioniert also wirds schon passen. So besonders ist das Modul ja auch nicht, dass man das reverse-Engineering großartig unterbinden müsste. Wenn dem Hersteller die 5V genügen hätte er sich den MAX232, 1 Transistor, 1 Widerstand und 5 Kondensatoren sparen können.. (der µC hat im übrigen auch keine Beschriftung, aber der tut was er soll)
Zitat:
Als x-Entwickler kenne ich sowas schon lange, dass früher z.B. defekte Dioden als Brücken benutzt wurden um Reparaturen ohne Schaltplan praktisch unmöglich zu machen, weil auswechseln solcher Diode mit guter, das ganze nur noch veschlimmert hat. :confused:
Also das ist ja wirklich dreist :-) Heute findet man dafür überall proprietäre Software+LockBits und ASICs..
Inzwischen habe ich viel herumprobiert, und bin heute Vormittag auch ein gutes Stück weitergekommen:
Anhang 29031
Das Prinzip ist recht simpel: 1Bit=20Wellen 40KHz. Um bei Bit=high den Nulldurchgang der Amplitude zu erzeugen wird zwischen zwei Bits eine Pause von 5µs (+ein wenig CPU-Zeit) gemacht. Das hat zur folge, dass die Empfängerkapsel aus dem tritt kommt und neu einschwingen muss. Der Code ist auch pipieinfach:
Code:
void Tx (uint8_t data)
{
uint8_t stream[2+8+1];
uint8_t i, j;
stream[0]=1;
stream[1]=1;
for(i=0; i<8; i++)
{
stream[2+i] = (data&(1<<i))?1:0;
}
stream[10]=1;
for(i=0; i<2+8+1; i++)
{
for(j=0; j<20; j++)
{
Clear(Tx_PORT, Tx1);
Set(Tx_PORT, Tx2);
_delay_us(12);
Set(Tx_PORT, Tx1);
Clear(Tx_PORT, Tx2);
_delay_us(12);
}
if(stream[i])
_delay_us(5);
}
}
[...]
Tx(0b11000110);
Ich glaube das könnte was werden...