Ultrasonic måttband (8 / 13 steg)
Steg 8: PIC och ultrasonic sensor
HC-SR04 har fyra stift:
GND - ostridigt
Detta stift ansluter till marken stiften av schematiskt
VCC - power järnväg
Detta stift måste knytas till linjen makt i vår krets, som - i mitt fall ges av en 5V låg avhopp regulator.
Tillsynsmyndigheten kommer att ta lite värme, som batteriet är en 9V kvadrat formade en. Detta innebär en 4V droppe, så vi måste se till att vi inte drar för mycket ström genom den. Jag har inte använt en kylfläns för att skydda det, bearbetningsföretagen och MAX7219, och resten av komponenterna bör inte nå 200mA i strömförbrukning. Eftersom LED-s är multiplexed, beaktas LED nuvarande endast en gång.
TRIG - trigger pin
Användaren har att ge en mikrosekund länge impuls om detta stift, sedan vänta på ekot att anlända på echo PIN-koden. Observera att echo är hög i de första tiotals millisekunder, se till att du vänta så vid initiering.
Detta stift åberopas, en timer startas, räknar stoppas när echo pulsen upptäcks. Från nummer i registret över counter vet vi den tid som behövs för att ljudet ska komma tillbaka från ett eventuellt hinder. Vi vet att ljudets hastighet - kan vi beräkna avståndet!
ECHO - echo pin
Detta stift används för att upptäcka de reflekterade ljudvågorna. Jag anslutit den till ett stift som har avbrott-på-förändring kapacitet. En stigande kanten slutar tidigare nämnda räknaren, och sparar den i en variabel, som blir bearbetade strax efter. För mer info om IOK, kolla databladet för processorn.
En bild på min sensor, undersidan.
Timing
Tidpunkten för pulserar visas i databladet för denna modul. Som tidigare nämnts, måste du vänta ut första ~ 100 ms, sedan ge 10 mikrosekund trigger pulser på TRIG PIN-koden. Sådan knuff resulterar i en 8 cykel burst kommer från sändaren "talare". Vi måste vänta på ett eko framöver. Eko är tillfångatagen av mottagaren, och omvandlas till en impuls av variabel längd på ECHO stift. Längden på denna echo impuls är direkt proportionell med avståndet till hindret. Databladet ger en enkel formel för att räkna ut detta:
avståndet [cm] = t mätt [mikrosekunder] / 58
då återgår avståndet i centimeter. Jag delar bara med 5.8, så avståndet får returneras i millimeter. Jag kommer att använda fyra siffror, det är bäst för detta utbud och upplösning.
Låt oss ta en titt på detta med en snabbare öga, min logik analyzer:
Hur kan vi mäta puls längd en processor? Med externa avbryter. Jag kommer att använda en stigande IOK att starta en timer, och en fallande kanten för att stoppa den. Data från registret berättar den tid som gått mellan de två kanterna. Vi har att vi kan beräkna avstånd, enligt databladet.