Dit is een analoog signaal van een sony sensor in het signaal zit een soort nulpunt dit punt moet ik detecteren.Ik heb een schakeling nodig of ic maakt niet uit maar moet dit punt kunnen meten. Het liefst zou ik hebben als je dit punt detecteert dat er een puls komt om te sturen naar een microcontroller.
Even het signaal uitleggen als ik van boven kom en naar onder ga langsheen de sensor krijg ik dit analoog signaal. Als ik van onder naar boven ga krijg ik net het omgekeerde ananloog signaal. Hoe sneller je langsheen hoe scherper de piek en hoe trager hoe kleiner de piek dus het signaal varieert in amplitude en ook in tijdsbasis denk ik.
1e afbeelding:
2e afbeelding:
[Bericht gewijzigd door Hugo Welther op (11%)]
Voor de TS de afbeeldingen ingevoegd via het uploadarchief.
Zoek eens op zero-crossing detector.
[Bericht gewijzigd door Hugo Welther op (58%)]
AC/DrieC
Den Dries www.hulens.be
Gewoon met een microcontroller met de ADC ingang samplen en een uitgangssignaal naar keuze terug uitsturen? Uitmaken ofdat er eerst een positieve of eerst een negatieve flank is gekomen is dan ook niet moeilijk. Of wil je iets zonder microcontroller ?
[Bericht gewijzigd door AC/DrieC op (26%)]
Op 13 januari 2011 20:24:54 schreef AC/DrieC:
Gewoon met een microcontroller met de ADC ingang samplen en een uitgangssignaal naar keuze terug uitsturen ? Of wil je iets zonder microcontroller ?
Heb al een microcontroller maar alle pinnen gebruik ik al. Ik maak een xyz-tafel en heb al eindloop contacten en heb 3 sensoren om referentie punt. Hoe moet ik dan met die sampels een puls maken er komt een constant signaal uit en vanaf je paseer krijg je dit signaal.
http://www.axis-gb.com/PDF/SonySETK2.pdf Het is de set b3
[Bericht gewijzigd door Henry S. op (6%)]
AC/DrieC
Den Dries www.hulens.be
Met een 2de µcontroller dan
Waarmee je het signaal meet, kijkt of de eerste flank positief of negatief was en dan bijvoorbeeld een signaal uitstuurd van een aantal ms. De tijd van hoelang het signaal duurd geeft dan weer ofdat je de sensor van links naar rechts passeerde of omgekeerd.
ps: je kan je bericht bewerken, je moet niet altijd een nieuw bericht aanmaken 
Ik moet dat punt midden in het signaal detecteren en niet de eerste flank die positief of negatief is. En de duur van het langsheen paseren wordt het signaal breder. Als je traag paseert wordt het signaal breder en als je snel paseert is het signaal korter.
[Bericht gewijzigd door Henry S. op (48%)]
AC/DrieC
Den Dries www.hulens.be
Als je een microcontroller gebruikt kan dit dus ook. Je meet constand met de ADC. Je ziet een puls omhoog langskomen. Als je terug de referentiewaarde meet, zit je juist in het midden.
Ja nu je het zegt als ik het hele signaal sampel en het midden van neem heb ik het nulpunt als ik het goed begrijp
[Bericht gewijzigd door Henry S. op (56%)]
AC/DrieC
Den Dries www.hulens.be
Je moet maar de helft van het signaal samplen. Eerst gaat het omlaag, als het op zijn laagste punt zit dan begin je te kijken wanneer het gemeten signaal gelijk is aan het refernetiefignaal (signaal zonder dat er iets voor de sensor komt)Als dit zo is wil dit zeggen dat je nu juist in het midden zit van het de sinus (puls omhoog-puls omlaag).
En als het signaal eerst naar beneden gaat net het zelfde doen als het gelijk is aan het referentie signaal ?
[Bericht gewijzigd door Henry S. op (66%)]
Peter Claus
It is so simple to be happy, but it is so difficult to be simple
Je sampled het signaal met de ADC van de microcontroller.
Volgende variabelen hou je bij:
Waarde
vorige waarde
dWaarde/dt (de afgeleide)
Wanneer die afgeleide groot positief (stijgende flank) wordt en de huidige waarde is in een window rond het nulpunt, dan heb je exact de kruising van de puls.
Ik gebruik die detectiemethode om een hartslagpuls te detecteren en werkt uitstekend.
AC/DrieC
Den Dries www.hulens.be
Juist. je zal wel moeten zeggen:
If(gemeten waarde ligt tussen +10% ref en -10% ref) then middelpunt
Want anders kan je het middelpunt wel eens missen als het juist tussen 2 metingen doorkomt.
EDIT: dit is dus wat Peter Claus ook zegt.
[Bericht gewijzigd door AC/DrieC op (10%)]
delta brafo (danny)
Geen dagen toevoegen aan het leven, maar leven toevoegen aan de dagen.
Afgeleide bepalen, door het nulpunt is de steiging of daling het grootst. kan volgens mij wel simpel analoog.
http://www.ecircuitcenter.com/circuits/opdfr/opdfr.htm
De grootste afgeleide bepalen, uitgangs spanning daar van meten en vergelijken met comperator schakeling.
Henry S.
Moderator
Confucius says chà bù duo. Deze post is niet door ChatGPT gegenereerd. De 2019 CO labvoeding.
Nog even de huisregels voor gamer201: http://www.circuitsonline.net/forum/faq
en nu gaat het hier verder? : http://www.circuitsonline.net/forum/view/93532
[Bericht gewijzigd door Shiptronic op (45%)]
Wel ik heb een nieuwe topic geopend omdat dit specifiek gaat om het te programeren in de pic18f4550 omdat hij een inwendige ADC converter heeft. Mij lukt het niet om hem te programeren om dat nulpunt te hebben en de motor te doen laten stoppen met draaien bij dat punt.
[Bericht gewijzigd door Henry S. op (25%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Gewoon de A/D converter uitlezen tot de waarde 0 is. A/D voorbeeldcode zit er genoeg bij de MikroE compilers...
Op 17 maart 2011 20:15:47 schreef Arco:
Gewoon de A/D converter uitlezen tot de waarde 0 is. A/D voorbeeldcode zit er genoeg bij de MikroE compilers...
heb al geprobeert met het voorbeeld maar het lukt me niet
Op 17 maart 2011 20:18:58 schreef JesperR:
wat heb je nu dan aan code, laat eens zien. tis een school vraag dus laat maar komen wat je hebt.
Niets die werkt ik heb het geprobeert met het voorbeeld die er staat in mikroC maar het lukt niet om hem te laten stoppen op dat moment. Dit is het voorbeeld dat er staat. Heb het natuurlijk aangepast met andere bits enz maar heb het verwijderd omdat het toch niet gaat en in die do while ook dingen aangepast enz maar het lukt me niet
void main() {
ANSEL = 0x04; // Configure AN2 pin as analog
ANSELH = 0; // Configure other AN pins as digital I/O
C1ON_bit = 0; // Disable comparators
C2ON_bit = 0;
TRISA = 0xFF; // PORTA is input
TRISC = 0; // PORTC is output
TRISB = 0; // PORTB is output
do {
temp_res = ADC_Read(2); // Get 10-bit results of AD conversion
PORTB = temp_res; // Send lower 8 bits to PORTB
PORTC = temp_res >> 8; // Send 2 most significant bits to RC1, RC0
} while(1);
}
Om de motor te laten draaien heb ik een stuurkaart enz ik moet gewoon de chipselect laag maken en een dalende flank te doen op een bit. Iedere keer ik een dalende flank doe zet de stappenmotor 1 stap.
void main()
{
Init();
while(1)
{
if (Start == 1)
{
Chipselect=0;
bit=1;
delay_ms(10);
bit=0;
delay_ms(10);
}
else
{
CS = 1;
}
}
[Bericht gewijzigd door Henry S. op (0%)]
Als het voor de assen van je kruis tafel is, kan je dan niet beter kijken naar een rotarie encoder?
of anders een hal sensor, om naukeurig te stoppen moet je langzaam draaien, dan geeeft jouw sensor geen signaal.
bij hoge snelheid heb je een goed signaal, maar dan ben je altijd te laat. Ik ben bang dat dit niet gaat werken.
dit is alleen geschikt om op hogere toerentallen te kunnen sycroniseren.
nee hoor als ik de sensor traag beweeg is het signaal in de tijd gewoon langer hij gaat altijd tot bijna 10v in amplitude als ik nu snel of traag naar de sensor ga.
[Bericht gewijzigd door Henry S. op (61%)]
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
nope. een nulpunt detector gaat nooit werken. wat je moet maken is een SIGN detector ! en dan met name een die het wisselen van teken kan detecteren.
in rust is je signaal nul wanneer je passeert ga je ofwel eerst omhoog of omlaag.
op een bepaald moment slaat het teken om en dan gaat het signaal terug naar nul toe. ( richting speelt geen rol)
while adc =0 ' solang er niks gebeurt
wend
' er zit leven in de adc
if adc >0 then ' kijk of de meetwaarde positief of negatief is en sla op
sign=1
else
sign=0
end if
trip=false
while not trip
if (sign and (adc <0)) then trip=1
if (not(sign) and (adc >0)) then trip=1
wend
en we gaan vrolijk verder nu ...
(Z)weetvoetje
Hogepriester in het genootschap der mexicaanse hond. // // Aan 2% van de mensen is 50% van het bezit ; 1% van het bezit is aan 50% van de mensen.
Het signaal twee maal integreren, dan zou je als het goed is uit moeten komen op een overgang van bijvoorbeeld nul naar 5V.
(want dit signaal ziet eruit als de dubbele afgeleide van een stapfunctie)
Het mooie is dat je dan hoogstwaarschijnlijk bij bijna iedere snelheid goed uitkomt.
Je moet nog wel de ruis weg laten vallen, maar dat is niet zo moeilijk. Gaat het hier om een magneetje dat door een spoel valt?
http://www.axis-gb.com/PDF/SonySETK2.pdf
Het is de magnesensor set b3, er zit bijna tot geen ruis op.
[Bericht gewijzigd door Henry S. op (72%)]
(Z)weetvoetje
Hogepriester in het genootschap der mexicaanse hond. // // Aan 2% van de mensen is 50% van het bezit ; 1% van het bezit is aan 50% van de mensen.