Den svävar... nästan

Berätta om dina pågående projekt.
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Den svävar... nästan

Inlägg av $tiff »

För ett tag sedan såg jag någon som länkade till den här artikeln. Jag tyckte den var kalascool och dessutom löjligt enkel, så jag försökte mig på en egen version.

Men eftersom jag är PIC-tönt så ville jag bygga den med en mikrokontroller som enda IC. En linjär hallsensor trollade jag fram härifrån.

Jag lindade mig en ful spole på en sjutusikens massa varv, eftersom jag inte förstår bättre än så. Av en händelse hade jag en färdigmonterad H-brygga som äntligen fick stå till tjänst och leverera lite ström med varierande polaritet.

Hallsensorn anslöt jag till en A/D-port så PICen kunde läsa av spänningen, trolla lite med siffrorna och spotta ut en kontinuerlig PWM-signal som via några transistorer omvandlas till snabba fram/back-skiftningar av H-bryggan, precis som i artikeln.

Allt är naturligtvis tejpat fast så ghetto som möjligt, hur annars? :wink:

Men tyvärr blev inte resultatet så bra. Se själv:
Film1
Film2

Som ni ser kommer hela kalaset i självsvängning och avbryter därmed det roliga på egen hand. Enligt mig själv kan inte µC sampla A/Dn tillräckligt fort för att häva dessa svängningar. Därför provade jag att optimera koden, igen och igen och lite till. Men det hjälpte inte så mycket.
Jag kan mycket väl tänka mig att detta löses bäst på analog väg, hela vägen.
Svävsaken ser nog lite tung ut med en nickelkula och allt, men det är ganska bra klös i de små neo-magnetstavarna! Jag hade tänkt mig att köpa en kraftigare magnet (den kraftigaste), om det finns chans att jag löser mitt problem.

Vad har jag nu gjort för fel tycker ni?

Edit: Bildslarver
Bild
Senast redigerad av $tiff 10 juli 2004, 01:35:16, redigerad totalt 1 gång.
Användarvisningsbild
Hedis
Inlägg: 2488
Blev medlem: 8 december 2003, 15:10:44
Ort: Vänersborg
Kontakt:

Inlägg av Hedis »

Hmm, skummt. Codecs fattas :(
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

själv tror jag inte att du har för långsam kod, jag tror att du bör ha mjuka övergångar i utsignalen (lågpassfilter). nu har jag iofs varken sett din kod, ditt bygge eller dina filmer, men ändå ;)

Du kan inte fixa något annat filmformat ?

/Johan
danei
EF Sponsor
Inlägg: 26418
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Jag tror inte heller felet ligger i att det är för långsamt. Men det är nog regleringen som är problemet.
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

Jag har provat att ge olika feedback åt alla möjliga håll, både linjärt och exponentiellt, men det hjälper inte så mycket det heller. Med den enkla krets som gubben konstruerade var ju väldigt linjär, och fungerar så bra som den gör, hur lyckas han, utan filter eller något sånt!?

Codecs? Det var det värsta, jag har själv inga problem med sånt :lol:
En bild gör väl inte världen bättre, men visst...
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Hmmm, filerna är ju i indeo-format. Den codecen har funnits med i windows sen 3.1 tror jag :)

Vad innebär "trolla med siffrorna" exakt?

Du kanske behöver trolla lite annorlunda :)

Om det är en enkel P-regulator (styrsignal = insignal * P) så kanske du behöver minska P... bara en ide, var aldrig någon expert på reglerteknik.
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

Nej, jag är ju inte så påläst heller, men jag har som sagt provat ändra detta P (som det tydligen kallas) olika för både repellerande och attraherande krafter.

Kod, lite bantad (någon som fattar PICBasic? :wink: )

Kod: Markera allt

DEFINE OSC 20				'Define OSC (20MHz)

' - - - Pins - - - 
magnet VAR PORTB.3			'Toggle electromagnet (hover function) 1= enable
Button0 VAR PORTB.4			'Button. 0 = active

' - - - Variables - - -
adc VAR BYTE			'ADC result
temp VAR BYTE			'temp byte, calculator
center VAR BYTE			'hover centrum
edge VAR BYTE			'hover edge

' - - - Initiate ports and values - - - 

'ADC config
ADCON0 = %10000001	'Initiate A/D-converter on channel 0 (AN0)
ADCON1 = %00001110	'F(osc)/32 clock source -  AN0 on (rest of portA is digital) -  left justified result
TRISA.0 = 1			'PortA.0 = input

'PWM config
TRISC.2 = 0			'PortC.2 output (PWM1)
CCP1CON = %00001100	'Mode select = PWM1 on
T2CON = %00000100	'Timer2 ON + 1:1 prescale
PR2 = 255			'~19,53 kHz @ 20MHz OSC, 10 bit resolution

'Other I/O-config
Input button0		'Button to set hover centrum

Read 0,edge		'Hallsensor edge value (from memory)
center = edge / 2

High magnet			'Turn on electromagnet


' - - - - - Main Loop - - - - - 
main_loop:

'Start on A/D-conversion to fetch at end of program loop
ADCON0.2 = 1		'Start A/D-conversion

'Set hover centrum (if button is pressed)
IF Button0 = 0 Then
	edge = adc + 1
	Write 0,edge
	center = edge / 2
EndIF

IF adc > center Then		'If magnet is too far away, pull it closer by increasing PWM
	temp = adc - center		'Difference
	IF temp < 32 Then		'Prevent rollover
		CCPR1L = 128 + (temp * temp / 8)	'Add sensor value to center
		High magnet			'Turn on electromagnet (if not on already)
	Else 
		Input magnet		'Turn off electromagnet (energy save). Magnet is too far away anyway
	EndIF
EndIF

IF adc < center Then		'If magnet is too close, push it away by decreasing PWM
	High magnet				'Turn on electromagnet (if not on already)
	temp = center - adc		'Difference
	IF temp < 64 Then		'Prevent rollover	
		CCPR1L = 127 - (2 * temp)	'Subtract sensor value from center
	Else 
		CCPR1L = 0			'If difference is too big, set PWM to zero (full push)
	EndIF
EndIF

IF adc = center Then		'Perefct match
	High magnet				'Turn on electromagnet (if not on already)
	CCPR1L = 128				'Neutral PWM (no push, no pull)
EndIF


'read_ADC:

adc = ADRESH		'Save ADC result

GoTo main_loop	'Loop forever

End
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1646
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Någon variant av PID-reglering skulle nog kunna göra susen.
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

RDX*, på svenska?
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1646
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Nu använder du en proportionell reglering (P), om du lägger till en integrerande och deriverande så får du en PID-reglering.

Det har skrivits om PID-reglering på forumet tidigare. Sen kan du söka efter Appnote:s. Jag vet att Atmel har en appnote om PID-reglering.
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

kanske lite väl med integrering/derivering i en icke-flyttals-hanterande liten stackars PIC? nåja, jag ska ta en titt på det när en ny dag gryr...
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1646
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Om du minns tråden "Ultraliten snabb linjeföljande robot"
http://www.geekjoan.com/forum/viewtopic ... ljare#7621

Han börjar också med en P-regulator men den blir labil så han lägger till en deriverande del och då blir den stabil. Kolla in sidan och filmerna.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

I den digitala värden så är integrering = summering och derivering = differens mellan två sampel, så speciellt jobbigt är det inte (för processorn).

En anledning varför enkel P-reglering funkar bra med en analog krets men inte med PIC kan vara tiden det tar från insignal till utsignal. Den fördröjningen betyder fasskift, vilket kan leda till instabil regulator.
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Inlägg av MicaelKarlsson »

För mycket P-verkan kan få hela härligheten att spåra ur totalt.

Hittade ett PID-exempel i C, håll tillgodo: http://www.avrfreaks.net/phpBB2/viewtopic.php?t=21176
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10677
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Inlägg av GeekJoan »

Skulle ju kunna köpa en och plocka isär... :)

HIT ME!

Bild
Skriv svar