Acties:
  • 0 Henk 'm!

  • Pizza_Boom
  • Registratie: Juli 2012
  • Laatst online: 21:57
Ik heb een simpel PICkit 2 gevalletje, met momenteel een 16f690 erin, en nu had ik bedacht hier een servotje aan te hangen. Leuk, Carson CS3 gehaald en wat aan het testen. PWM doorsturen vanaf een analoge input gaat prima, na wat veranderen van de dutycyle draait de servo vrolijk mee met mijn potmeter. Ik wil hem echter met digitale waardes aansturen, dus ipv analoog (ADRESH in mijn geval) aan de CCPR1L, daar een getal. Gaat ook nog, maar de servo blijft zoemen in zijn rechter kwadrant. Stroom eraf en erop werkt soms, voltage van de PICkit omhoog zetten hielp iets, maar het blijft een gezoem. Iemand enig idee waar dat in zou kunnen zitten?
Het lijkt er dus op dat de servo niet in de positie komt die ik wil hebben.

Ideeën die ik had waarom hij niet in zijn positie zou komen:
- De waarde die ik uitvraag is niet haalbaar, ik vraag bijv. 153 terwijl de servo alleen 150 en 155 als positie zou kennen.
- Voltage te laag
- Het hoort gewoon bij een goedkope servo en ik moet maar accepteren dat het ene kwadrant wel zoemt en het andere niet.

De servo staat momenteel onbelast (of het pennetje dat erop zit moet belasting zijn) en is nog nergens ingebouwd.

Acties:
  • 0 Henk 'm!

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
Meestal is het dan je PWM frequentie. Een motor PWM'en onder de 20kHz is hoorbaar.

Acties:
  • 0 Henk 'm!

  • rapsac
  • Registratie: Juni 2002
  • Laatst online: 09-07 20:30
Modelbouw servos lopen op 50Hz..
Het zoemen komt van die 50Hz, en is onvermijdelijk. Wanneer je de spanning wat opschroeft naar bv. 5,5V is de kans op zoemen wat kleiner, omdat de servo dan wat meer kracht heeft bij kleine positie-fouten en daarmee (min of meer toevallig) precies op de juiste positie kan komen. Is de kracht te klein dan schiet de servo na het overwinnen van de 'stiction' de positie voorbij en gaat daarna weer terug voorbij de positie enzovoorts.
Wanneer je een digitale servo gebruikt is de kans op zoemen weer wat kleiner omdat die motortjes in de servos sneller/beter kan regelen (maar de positie wordt ook daar nog steeds met een analoog potmetertje uitgelezen helaas).

Xeon e5-2695 V3, RX Vega 64, Rift | PS3 | PS4 Pro,PSVR


Acties:
  • 0 Henk 'm!

  • memphis
  • Registratie: Oktober 2000
  • Laatst online: 23:01

memphis

48k was toen meer dan genoeg.

Wat is de framerate, een simpele servo verwacht een framerate van 20msec, meestal mag dat wat minder maar bij 16msec kan ik uit ervaring zeggen dat een servo wat vreemd kan doen. Daarnaast is het vrij normaal dat een servo bij stlstand kan zoemen, dan is die continu aan het corrigeren om die positie te behouden.

Er zijn mensen die mij een GOD vinden


Acties:
  • 0 Henk 'm!

  • Pizza_Boom
  • Registratie: Juli 2012
  • Laatst online: 21:57
Framerate, goeie... Ik weet zo 1, 2, 3 niet hoe ik dat uit mijn PIC moet halen.

Momenteel zit onderstaand programma erin, er zit wat junk in (naast wat standaard zooi voor mijn extra headerstukje) omdat ik e.e.a. heb aangepast voor mijn servotestjes. Het is de bedoeling dat er uiteindelijk een 16LF1455 of 59 in komt om het zooitje aan te sturen, daar ik meer dan 1 PWM signaal nodig heb. Ik heb ze wel, maar had ze op het moment van testen niet bij de hand, maar volgens mij zou dat niet uit mogen maken. 't Zijn immers beide 8bit IC's. Voor de pinlayout maakt het sowieso niet uit (in de huidige setting), behalve dat de 1455 een 14 pinner is.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*

             ________  _______
        VDD |        \/       | VSS
        RA5 |       16F690    | RA0 POT-meter
        RA4 |                 | RA1 POT-meter (ext)
Button  RA3 |                 | RA2 POT-meter (ext)
LED5e   RC5 |                 | RC0 LED0
LED4e   RC4 |                 | RC1 LED1
LED3    RC3 |                 | RC2 LED2
        RC6 |                 | RB4
        RC7 |                 | RB5
        RB7 |_________________| RB6

*/

 #include   <pic.h>

__CONFIG(FCMEN_OFF & IESO_OFF & BOREN_OFF & CP_OFF &  PWRTE_OFF & WDTE_OFF & MCLRE_OFF & FOSC_INTRCIO);

int potmeter;
int led;

void PWM (void){                        // declareert de PWM functie
        GO_nDONE = 1;
        while (GO_nDONE == 1);
        CCPR1L = 105;               // bepaalt PWM hoogte
}

void main(void)                         // hoofdprogramma
{ 

    PORTC   = 0;
    TRISC   = 0;
    PORTA   = 1;
    TRISA   = 1;
    ANSEL   = 0x01;         // RA0
//  ANSEL   = 0x02;         // RA1
//  ANSEL   = 0x04;         // RA2
//  EECON1  = 0b01;
    ANSELH  = 0;
    ADCON0  = 0x01;         // RA0 left justified
//  ADCON0  = 0x85;         // RA1 left justified: 0x05, RJ: 0x85
//  ADCON0  = 0x09;         // RA2 left justified
    ADCON1  = 0x10; 
    CCP1CON = 0x0C;         // 00001100
    T2CON   = 0x06;         // 00000110 dutycycle

        while(1)
            {
                PWM();
//              indicator();
                    if (led == 1)
                        PSTRCON = 0x0F;     // P1C output PWM
                    else if (led == 0)
                        PSTRCON = 0x0F;     // P1D output PWM
            }       
}


De dutycycle heb ik omhoog geramd naar 16 (0x06) omdat hij het op 4 (0x05) niet leuk vond (lees: de uitslag van de servo werd maar ten dele gehaald), dus feitelijk is daarmee de frequentie omlaag gezet.

En voor de mensen die bang zijn dat deze meuk in de controller komt: als ik alles werkend heb, dan schrijf ik het programma nogmaals opnieuw, maar dan op logische volgorde zonder allerlei meuk. ;)

Spanning naar 5,5V of zelfs 6V brengen betekent voor mij wel dat er dus een H brug systeem in moet. De 1455/1459 is juist gekozen omdat die op 3,3V draait (hetgeen 2,4Ghz transceivers maximaal lusten). Ach, je kan niet alles hebben. Kunnen we weer vrolijk solderen (of zoeken naar een goedkope meervoudige H brug IC). :)

[ Voor 6% gewijzigd door Pizza_Boom op 06-12-2014 01:17 ]


Acties:
  • 0 Henk 'm!

  • 3xhaas
  • Registratie: Februari 2002
  • Laatst online: 26-09-2024
Het zoemen komt doordat je timing net niet goed overeen komt met de timing van de servo. Hierdoor loopt hij dus continue te schakelen tussen 2 standen. Als het een digitale servo betreft hoef je niet continue aan te sturen en is er dus geen pwm nodig, maar enkel een juiste puls. Na die puls stop je dan met sturen totdat je naar een andere stand wilt. Hierdoor zal je servo niet meer zoemen.

Acties:
  • 0 Henk 'm!

  • Pizza_Boom
  • Registratie: Juli 2012
  • Laatst online: 21:57
Dat ga ik eens proberen, een puls en dan weer los totdat hij weer aangepast wordt.
Pagina: 1