Picproje Elektronik Sitesi

DERLEYİCİLER => Proton+ => Konuyu başlatan: buntger - 20 Haziran 2016, 20:24:21

Başlık: Problems with residual voltage to PWM.
Gönderen: buntger - 20 Haziran 2016, 20:24:21
Hello,

I want to regulate a motor with PWM and regulate I'm using a handlebar equipped with accelerator Hall effect (View photo).
The problem is the residual voltage of 0.8V.
The handlebar is fed to 5V.
At full throttle at the output provides a voltage 4.3V only.
Using this formula this means to regulate the PWM with 0.8V
I'm 84 steps of 255, without doing anything.

As I can make as smooth regulation of 0-255.
Without having to start 84.


Device = 18F26K22
    Xtal = 16   

Config_Start
FOSC = INTIO67   
PLLCFG = On 'On      ' Oscillator multiplied by 4
PRICLKEN = On     ' Primary clock enabled
FCMEN = OFF           ' Fail-Safe Clock Monitor disabled
IESO = Off            ' Internal/External Oscillator Switchover mode disabled
PWRTEN = On           ' Power up timer enabled
BOREN = SBORDIS       ' Brown-out Reset enabled in hardware only (SBOREN is disabled)
BORV = 190            ' Brown Out Reset Voltage set to 1.90 V nominal
WDTEN = Off           ' Watch dog timer is always disabled. SWDTEN has no effect.
WDTPS = 128           ' Watchdog Timer Postscale 1:128
CCP2MX = PORTC1       ' CCP2 input/output is multiplexed with RC1
PBADEN = Off          ' PORTB<5:0> pins are configured as digital I/O on Reset
CCP3MX = PORTC6       ' P3A/CCP3 input/output is multiplexed with RC6
HFOFST = On           ' HFINTOSC output and ready status are not delayed by the oscillator stable status
T3CMX = PORTC0        ' Timer3 Clock Input (T3CKI) is on RC0
P2BMX = PORTB5        ' ECCP2 B (P2B) is on RB5                   (EXTMCLR = Enable MCLR/Disable RE Input)
MCLRE = INTMCLR       ' MCLR pin enabled, RE3 input pin disabled  (INTMCLR = Disable MCLR/Enabled RE Input)
STVREN = Off          ' Stack full/underflow will not cause Reset
LVP = Off             ' Single-Supply ICSP disabled
XINST = Off           ' Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
Debug = Off           ' Disabled
Cp0 = Off             ' Block 0 (000800-001FFFh) not code-protected
CP1 = Off             ' Block 1 (002000-003FFFh) not code-protected
CP2 = Off             ' Block 2 (004000-005FFFh) not code-protected
CP3 = Off             ' Block 3 (006000-007FFFh) not code-protected
CPB = Off             ' Boot block (000000-0007FFh) not code-protected
CPD = Off             ' Data EEPROM not code-protected
WRT0 = Off            ' Block 0 (000800-001FFFh) not write-protected
WRT1 = Off            ' Block 1 (002000-003FFFh) not write-protected
WRT2 = Off            ' Block 2 (004000-005FFFh) not write-protected
WRT3 = Off            ' Block 3 (006000-007FFFh) not write-protected
WRTC = Off            ' Configuration registers (300000-3000FFh) not write-protected
WRTB = Off            ' Boot Block (000000-0007FFh) not write-protected
WRTD = Off            ' Data EEPROM not write-protected
EBTR0 = Off           ' Block 0 (000800-001FFFh) not protected from table reads executed in other blocks
EBTR1 = Off           ' Block 1 (002000-003FFFh) not protected from table reads executed in other blocks
EBTR2 = Off           ' Block 2 (004000-005FFFh) not protected from table reads executed in other blocks
EBTR3 = Off           ' Block 3 (006000-007FFFh) not protected from table reads executed in other blocks
EBTRB = Off           ' Boot Block (000000-0007FFh) not protected from table reads executed in other blocks
Config_End


Declare Adin_Res    = 10   ' Resolution 10 BITS
Declare Adin_Tad    = FRC  ' Oscilator RC AD
Declare Adin_Stime  = 100  ' AD samples 100uS
Declare CCP1_Pin PORTC.2   ' Select Hpwm port and bit for CCP1 module (ch 1)


ANSELA = 00001111  ' Port A4-A7 Digital=0 / A0-A3 Analog
TRISA  =   00101111  ' Port A  I/O
ADCON1 = %1000000    ' Right justified
ADCON2 = %1000000    ' Right justified


Dim DUTY As Byte                       ' Duty PWM
Dim TENSION As ADRESL.Word      ' Voltage       
Dim VALOR_GAS As Float                   
Dim VOLT As Float                         




VOLT=0
DUTY=0
VALOR_GAS=0


CLS


Main:


GoSub ADC_Handlebar
    Print At 4,6,Dec2 VOLT ," - ", Dec DUTY     'Display
     HPWM 1,DUTY,20000

DelayMs 100
Goto Main




ADC_Handlebar:
   TENSION = ADIn 1                         ' Conversor AD
   VALOR_GAS = 489 *(TENSION / 10)  ' 489 = (5V/1023) 10Bits / Vref 5V
   VOLT = (VALOR_GAS / 10000)          ' Value in Volts
                 
         DUTY=(255/4.3)*VOLT             ' Calculates PWM (4.3V  full throttle not 5V )
Return


END


Picture:
(http://es.aliexpress.com/item/36V-E-bike-Half-Twist-Throttle-with-Battery-Indicator-Cruise-control-button-twist-throttle-lithium-battery/32647352683.html)
THX.