[color=Navy]#picaxe [/color][color=Black]28x2[/color]
[color=Blue]symbol [/color][color=Black]L0 [/color][color=DarkCyan]= [/color][color=Purple]b0[/color]
[color=Blue]symbol [/color][color=Black]U0 [/color][color=DarkCyan]= [/color][color=Purple]b1[/color]
[color=Blue]symbol [/color][color=Black]L1 [/color][color=DarkCyan]= [/color][color=Purple]b2[/color]
[color=Blue]symbol [/color][color=Black]U1 [/color][color=DarkCyan]= [/color][color=Purple]b3[/color]
[color=Blue]symbol [/color][color=Black]PhaseA [/color][color=DarkCyan]= [/color][color=Purple]b5[/color]
[color=Blue]symbol [/color][color=Black]PhaseB [/color][color=DarkCyan]= [/color][color=Purple]b6[/color]
[color=Blue]symbol [/color][color=Black]PhAlook [/color][color=DarkCyan]= [/color][color=Purple]b7[/color]
[color=Blue]symbol [/color][color=Black]PhBlook [/color][color=DarkCyan]= [/color][color=Purple]b8[/color]
[color=Blue]symbol [/color][color=Black]PhAval [/color][color=DarkCyan]= [/color][color=Purple]b9[/color]
[color=Blue]symbol [/color][color=Black]PhBval [/color][color=DarkCyan]= [/color][color=Purple]b10[/color]
[color=Blue]symbol [/color][color=Black]clk [/color][color=DarkCyan]= [/color][color=Purple]pinc.0[/color]
[color=Blue]symbol [/color][color=Black]direct [/color][color=DarkCyan]= [/color][color=Purple]pinc.1[/color]
[color=Black]intit:
[/color][color=Blue]setint [/color][color=Navy]%00000001[/color][color=Black], [/color][color=Navy]%00000001 [/color][color=Green]'set interupt
'now set sine wave lookup value
[/color][color=Blue]let [/color][color=Black]phalook [/color][color=DarkCyan]= [/color][color=Navy]0
[/color][color=Blue]let [/color][color=Black]phblook [/color][color=DarkCyan]= [/color][color=Black]phalook [/color][color=DarkCyan]+ [/color][color=Navy]6
[/color]
[color=Black]main:
[/color][color=Green]'now get voltage value from ech phase
[/color][color=Blue]readadc [/color][color=Navy]0[/color][color=Black], phaseA
[/color][color=Blue]readadc [/color][color=Navy]1[/color][color=Black], phaseB
[/color][color=Green]'now check if phase A is within tolerence
[/color][color=Blue]if [/color][color=Black]phaseA [/color][color=DarkCyan]< [/color][color=Black]L0 [/color][color=DarkCyan]or [/color][color=Black]phasea [/color][color=DarkCyan]> [/color][color=Black]U0 [/color][color=Blue]then
if [/color][color=Black]Phasea [/color][color=DarkCyan]< [/color][color=Black]L0 [/color][color=Blue]then
[/color][color=Green]'switch on phase a
[/color][color=Blue]else
[/color][color=Green]'swithc of phase
[/color][color=Blue]end if
end if
[/color][color=Green]'now check if phase B is within tolerence
[/color][color=Blue]if [/color][color=Black]phaseB [/color][color=DarkCyan]< [/color][color=Black]L0 [/color][color=DarkCyan]or [/color][color=Black]phaseb [/color][color=DarkCyan]> [/color][color=Black]U0 [/color][color=Blue]then
if [/color][color=Black]PhaseB [/color][color=DarkCyan]< [/color][color=Black]L0 [/color][color=Blue]then
[/color][color=Green]'switch on phase a
[/color][color=Blue]else
[/color][color=Green]'swithc of phase
[/color][color=Blue]end if
end if
goto [/color][color=Black]main[/color]
[color=Blue]interrupt:
[/color][color=Green]'pause 5000
#rem
step |% |Voltage |ADC value |ADC
----------------------------------------
0 |100.00%| 5 |256 |256
1 | 98.10%| 4.905 |251.136 |251
2 | 92.40%| 4.62 |236.544 |237
3 | 83.10%| 4.155 |212.736 |213
4 | 70.10%| 3.505 |179.456 |179
5 | 55.50%| 2.775 |142.08 |142
6 | 38.20%| 1.91 |97.792 |98
7 | 19.50%| 0.975 |49.92 |50
8 | 0.00% | 0 |0 0
Figures Obtained from stepperworld.com
#endrem
'check direction
[/color][color=Blue]if [/color][color=Black]direct [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]then
inc [/color][color=Black]phalook
[/color][color=Blue]inc [/color][color=Black]phblook
[/color][color=Blue]else
dec [/color][color=Black]phalook
[/color][color=Blue]dec [/color][color=Black]phblook
[/color][color=Blue]end if
[/color][color=Green]'over/underflow protection needed
'lookup sine wave values
[/color][color=Blue]lookup [/color][color=Black]phalook, [/color][color=Blue]([/color][color=Navy]256[/color][color=Black],[/color][color=Navy]251[/color][color=Black],[/color][color=Navy]237[/color][color=Black],[/color][color=Navy]213[/color][color=Black],[/color][color=Navy]179[/color][color=Black],[/color][color=Navy]142[/color][color=Black],[/color][color=Navy]98[/color][color=Black],[/color][color=Navy]50[/color][color=Blue])[/color][color=Black],phaval
[/color][color=Blue]let [/color][color=Black]L0 [/color][color=DarkCyan]= [/color][color=Black]phaval [/color][color=DarkCyan]- [/color][color=Navy]10
[/color][color=Blue]let [/color][color=Black]U0 [/color][color=DarkCyan]= [/color][color=Black]phaval [/color][color=DarkCyan]+ [/color][color=Navy]10
[/color][color=Blue]lookup [/color][color=Black]phblook, [/color][color=Blue]([/color][color=Navy]256[/color][color=Black],[/color][color=Navy]251[/color][color=Black],[/color][color=Navy]237[/color][color=Black],[/color][color=Navy]213[/color][color=Black],[/color][color=Navy]179[/color][color=Black],[/color][color=Navy]142[/color][color=Black],[/color][color=Navy]98[/color][color=Black],[/color][color=Navy]50[/color][color=Blue])[/color][color=Black],phbval
[/color][color=Blue]let [/color][color=Black]L1 [/color][color=DarkCyan]= [/color][color=Black]phbval [/color][color=DarkCyan]- [/color][color=Navy]10
[/color][color=Blue]let [/color][color=Black]U1 [/color][color=DarkCyan]= [/color][color=Black]phbval [/color][color=DarkCyan]+ [/color][color=Navy]10
[/color][color=Green]'coil change and reducing votlage needed.
[/color][color=Blue]setint [/color][color=Navy]%00000001[/color][color=Black], [/color][color=Navy]%00000001
[/color][color=Blue]return[/color]