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:
http://www.uploadarchief.net/files/download/b.jpg

2e afbeelding:
http://www.uploadarchief.net/files/download/bn.jpg

[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%)]

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%)]

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%)]

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%)]

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).
http://www.uploadarchief.net/files/download/ts.jpg

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%)]

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.

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%)]

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.

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%)]

Gewoon de A/D converter uitlezen tot de waarde 0 is. A/D voorbeeldcode zit er genoeg bij de MikroE compilers...

wat heb je nu dan aan code, laat eens zien. tis een school vraag dus laat maar komen wat je hebt.

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%)]

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 ...

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%)]

Hoeveel vertraging is nog goed genoeg?