µPong - En ultraljuds sensor
Postat: 28 juli 2012, 20:21:59
Hej, jag har i några år hållit på att bygga ultraljuds sensorer.
Det började då jag letade efter sensorer att ha på en minisumo och hittade ultraljudssensorer för 300:- styck, jag vill ha ca 8sensorer eller så så det blev för stort och för dyrt.
Så jag tänkte, hur svårt kan det vara? Min första sensor blev lika stor som en Ping ))) och likande kostade dock ca 25:- att bygga.
Men jag ville ha mindre sensorer så efter ca 20-30versioner av sensorn(gjorde inte kretskort av alla) blev det den senaste skapelse, V4.85
Den är 10x10x20mm stor och har en räckvidd på ca 50-70cm beroende på hinder.
Den har en massa fiffiga funktioner som kallibrering, kaskadkoppling osv.
Hårdvaran är en PIC16F1824, en högspännings dubbel op-amp och en PGA(MCP6G01). Allt passivt är 0603
PICen har en DAC kopplad till en komparator, andra komparator ingången går via PGAn till mottagar elementet.
Förstärkningen i PGAn och DAC värdet ändras efter en ramp när signalen genereras till sändaren.
Op-ampen driver sändarelementet.
Sedan är det bara tidsmätning och kommunikation
Kommunikationen är uppbyggd på UART och man skickar paket, sensorerna är kopplade på följande vis: Så man skickar ett paket med adress 2 till första sensorn
Den tar emot paketet och kollar om adressen är 0, om inte, ta bort 1 från adressen och skicka vidare.
Så tillslut får sensor #2 paketet med adressen 0 och bearbetar data och skickar vidare ett packet med adressen 255 som betyder "rör inte paketet, skicka till host"
Vissa kommandon går via alla sensorer, man kan skicka ett kommando som gör att alla gör en mätning och lägger in resultatet i paketet och skickar vidare.
Då får hosten ett paket med allas avstånd.
Med denna strukturen så slipper alla sensorer att ha en unik adress och alla(nästan) µC har uart.
Uppdateringshastigheten är bara begränsad av fysik, så om man mäter på max 50cm så blir uppdateringshastigheten:
(1m*340m/s)Hz alltså 340Hz, riktigt så bra får man inte men 250-300Hz har jag testat utan problem.
Om 2 sensorers "synfält" överlappar så blir det bara halva uppdateringsfrekvensen, annars hör dem varandra.
Sensorerna har följande pinnar:
TX,RX,GND,5V,30V
Man kan köra lägre spänning än 30V, jag kör på 12V, man får inte så mycket högre max avstånd på 30V.
All kod och PCB filer kan jag lägga ut om någon vill ha.
Bilder: Till vänster är de senaste ut-daterade mönsterkorten.
I centrum är den senaste versionen.
Till höger är en av de första mönsterkorten.
Bild på senaste sensorn populerad baksidan
Film:
Håller även på med en med 3 ultraljudselement som använder fasskift för att avgöra avstånd,vinkel och hastighet på målet.
Kommer att släppa mer info om den när/om den blir klar.
Det började då jag letade efter sensorer att ha på en minisumo och hittade ultraljudssensorer för 300:- styck, jag vill ha ca 8sensorer eller så så det blev för stort och för dyrt.
Så jag tänkte, hur svårt kan det vara? Min första sensor blev lika stor som en Ping ))) och likande kostade dock ca 25:- att bygga.
Men jag ville ha mindre sensorer så efter ca 20-30versioner av sensorn(gjorde inte kretskort av alla) blev det den senaste skapelse, V4.85
Den är 10x10x20mm stor och har en räckvidd på ca 50-70cm beroende på hinder.
Den har en massa fiffiga funktioner som kallibrering, kaskadkoppling osv.
Hårdvaran är en PIC16F1824, en högspännings dubbel op-amp och en PGA(MCP6G01). Allt passivt är 0603
PICen har en DAC kopplad till en komparator, andra komparator ingången går via PGAn till mottagar elementet.
Förstärkningen i PGAn och DAC värdet ändras efter en ramp när signalen genereras till sändaren.
Op-ampen driver sändarelementet.
Sedan är det bara tidsmätning och kommunikation
Kommunikationen är uppbyggd på UART och man skickar paket, sensorerna är kopplade på följande vis: Så man skickar ett paket med adress 2 till första sensorn
Den tar emot paketet och kollar om adressen är 0, om inte, ta bort 1 från adressen och skicka vidare.
Så tillslut får sensor #2 paketet med adressen 0 och bearbetar data och skickar vidare ett packet med adressen 255 som betyder "rör inte paketet, skicka till host"
Vissa kommandon går via alla sensorer, man kan skicka ett kommando som gör att alla gör en mätning och lägger in resultatet i paketet och skickar vidare.
Då får hosten ett paket med allas avstånd.
Med denna strukturen så slipper alla sensorer att ha en unik adress och alla(nästan) µC har uart.
Uppdateringshastigheten är bara begränsad av fysik, så om man mäter på max 50cm så blir uppdateringshastigheten:
(1m*340m/s)Hz alltså 340Hz, riktigt så bra får man inte men 250-300Hz har jag testat utan problem.
Om 2 sensorers "synfält" överlappar så blir det bara halva uppdateringsfrekvensen, annars hör dem varandra.
Sensorerna har följande pinnar:
TX,RX,GND,5V,30V
Man kan köra lägre spänning än 30V, jag kör på 12V, man får inte så mycket högre max avstånd på 30V.
All kod och PCB filer kan jag lägga ut om någon vill ha.
Bilder: Till vänster är de senaste ut-daterade mönsterkorten.
I centrum är den senaste versionen.
Till höger är en av de första mönsterkorten.
Bild på senaste sensorn populerad baksidan
Film:
Håller även på med en med 3 ultraljudselement som använder fasskift för att avgöra avstånd,vinkel och hastighet på målet.
Kommer att släppa mer info om den när/om den blir klar.