Hallo allemaal,

Zoals jullie denk ik wel zien ben ik net nieuw op dit forum,
toch kijk ik al een paar jaartjes op de site maar ik heb me nooit aangemeld.
Ik heb nu enige ervaring met PIC`s en het programeren enzo.
Dus ik wil nu voor mijn andere hobby ( RC vliegen )
Een schakeling maken die ledjes in een bepaald patroon kan laten knipperen zoals een echt vliegtuig dat ook heeft.
Dit is ook allemaal geen probleem,
Waar ik eigenlijk alleen tegenaan loop is dat ik de schakeling wil laten reageren op de ontvanger.
Normaal stuur je met de ontvanger de servo`s aan die dan je roeren bedienen.
Nu wil ik dus dat de schakeling herkend of de schakelaar op mijn zender aan of uit staat.
Normaal betekend dit dus dat een servo op 0 graden of op zijn maximale uitslag staat.
Ik heb alleen geen enkel idee hoe ik dit zou kunnen doen.
Op internet heb ik na lang zoeken een site gevonden van iemand in amerika die dit ook heeft gemaakt maar die geeft de HEX code niet (begrijpelijk).

Heeft iemand misschien een idee hoe ik dit zou kunnen laten werken ??

Groeten:

Yannic van Moerkerk

Als eerste moet je dan gaan uitvinden hoe dat signaal uit de ontvanger eruit ziet. Het servo signaal dus. Dat is alom bekend, en is zeker te vinden op internet. Als je dat weet kun je verder.
(zoek ook eens op het forum, want het is volgens mij regelmatig aan de orde geweest)

Hoi FlipFlop,

Ik zal eens het forum doorzoeken op zoiets.
Bedankt voor de tip.
Als ik niks vind dan zal ik eens gaan uitzoeken wat er precies voor signaal uit de ontvanger komt.
Ik heb even het forum afgezocht maar niet echt gevonden wat ik zocht.
Ik heb ook nog ff gegoogled en ben erachter gekomen dat een servo normaal word aangestuurd door een blokspanning en de tijd dat de blokspanning hoog is bepaald de stand van de servo :
II. Servo Motor Timing Diagram

EDIT!! IK heb de tekening even weggehaald was niet zon succes. kijk op deze site :

http://www.robotstore.com/download/Servo_Motor_Timing_1.pdf

Figure 7.20: An unmodified servo is a three-wire device that takes
power, ground, and a pulse-code modulated signal, such as the one shown
above. Wider or thinner pulses tell the servo to move to a designated
position, either clockwise or counterclockwise from center.

Ik moet de pic dus zo programeren dat hij deze pulsen kan onderscheiden.
Kan ik dit met een timer doen die om de zoveeel Ms de ingang checked ??
Of kan dit nog makkelijker ?

Groeten Yannic van Moerkerk

[Bericht gewijzigd door Henry S. op (68%)]

OP het modelbouwforum worden verschillende van deze apparaatjes besproken. Ook voor zelfbouw.
Het adres is: modelbouwforum.nl

Ik heb dus idd niet goed genoeg gezocht.
Ik zal de aangegeven forums een afbladeren.
Bedankt voor de tips en sorry voor de dubbelposts.

Yannic van Moerkerk

Een analoge servo word aangestuurd door een puls tussen de 1 en 2 milliseconden en dat ongeveer 20 keer per seconde. dat is eigenlijk alles wat je hoeft te weten. een puls van 1,5 ms is dus ongeveer het midden, en 2 ms is helemaal uitgeslagen naar de ene kant, 1 ms naar de andere kant.

Je zou iets in elkaar kunnen knutselen in een pic met een timer, die adhv de waarde bepaalt of je schakelaar aan is of uit. Bijv door de teller te starten / stoppen met interupt on change.

Ik wil wel eens graag weten in welke talen jullie dit normaal zouden programeren ik werk nu in assembler.

EDIT: ik gebruik een PIC 16F628

[Bericht gewijzigd door klein is fijn op (14%)]

Ik zou dit zelf in assembly programmeren, omdat zoiets simpel te doen is in assembler. Je zou ook basic kunnen gebruiken, als je dat toch hebt, gaat iets minder tijd inzitten waarschijnlijk.

Ik al de vorige projecten en proeven zelf gemaakt in assembler *gewoon met kladblok* ik ken de andere talen niet echt dus.

Hier staat een kompleet bouwpakket voor 35 dollar...

Ja ik ken die site inderdaad daarvan weet ik ook dat het mogelijk is met een PIC16F628
Maar zelf maken is natuurlijk leuker en leerzamer :)

@ Yannicflight.

Ja je kan inderdaad een RC signaal van je ontvanger inlezen in PIC basic, dat doe je met het pulsin commando.

Ik gebruik het zelf voor toeren regelaars voor schepen en tanks, of voor robotica.

Je hebt twee programma's nodig, één voor het uitlezen van je ontvanger, en als je die code weet dan kan je een programma gaan maken voor je eigen schakeling.

Groeten Lambiek.

Hier heb je de code voor het uitlezen van je ontvanger.

'*  Name    : PULS IN TEST_1.                                     
'*  Author  : H.v.Zwieten.                   
'*  Notice  : Copyright (c) 2008. 
'*  Notice  : All Rights Reserved.                              
'*  Date    : 4-11-2008.                                         
'*  Version : 1.0.                                               
'*  Notes   : Met dit programma kan de puls van een                                                  
'*  Notes   : modelbouw zender worden gemeten.
'*  Notes   : De waarde wordt op een diplay gezet.
'*  Notes   : 336 programma woorden en 19 variabele bytes.
                                              
Device 16F628A                         ; processor type

Config WDT_OFF,_                       ; WatchDog Timer uit
       PWRTE_ON,_                      ; Power-up Timer Enable aan
       LVP_OFF,_                       ; Low Voltage Programming uit
       MCLRE_OFF,_                     ; Externe Master Reset Enable uit
       HS_OSC                          ; cristal groter dan 4 Mhz
       
XTAL = 10                              ; cristal 10 Mhz
          
ALL_DIGITAL true                       ; alle poorten digitaal

Declare LCD_ENPIN PORTB.2              ; enable display poort B.2
Declare LCD_RSPIN PORTB.3              ; reset display poort B.3
                                       ; data display poort B.4 t/m B.7

Symbol On = 1                          ; 1 is hoog
Symbol off = 0                         ; 0 is laag

Dim var1 As Word                       ; variabele var1
Dim waarde As Word                     ; variabele waarde

Clear                                  ; wis geheugen 
                                   
DelayMS 2000                           ; wacht 2 seconden

Cls                                    ; wis display

;poortb  543210                        ; hulpregel poort B
TRISB = %000001                        ; ontvanger op poort B.0

test:                                  ; begin test
    waarde = var1                      ; variabele is waarde
    var1 = PulsIn PORTB.0,1            ; lees puls en zet in variabele
    Print At 1,3,"WAARDE_ONTVANGER"    ; zet text op display
    Print At 2,9,Dec waarde,"  "       ; zet waarde op display
GoTo test                              ; naar begin test
      
End                                    ; einde programma

Als je de waarde's weet kan je dat in een ander programma verwerken.

Groeten Lambiek.

Bedankt voor de informatie :)

Ik zal eens gaan experimenteren met deze gegevens,
Ik hou jullie op de hoogte van de vorederingen.

Groeten Yannic van Moerkerk

Hallo allemaal,

Sorry dat ik de laatste tijd zo weinig heb gedaan maar ik heb het de laatste weken nogal druk met school enzo.
Dit gaat toch voor dit project.
Ik ga zo snel mogelijk weer verder.

Groeten Yannic

Nou nou na een tijdje hevige drukte heb ik toch nog een kans gezien om wat uit te zoeken.
Ik ben erachter gekomen hoeveel ms mijn 0 punt is van de zender en ook het meest links en meest rechts.

Nu is mijn vraag natuurlijk nu ik dit weet dat ik een blokspanning heb waarvan ik de tijd in ms weet hoe kan ik hier dan een pic op laten reageren ?

Groeten Yannic

Ik dacht dat zo'n beetje kon variëren tussen 1 en 2 ms, en dat 20x per seconde.
Ik heb het zelf nooit geprobeerd, maar met het PULSIN commando (zoals omschreven in Lambiek z'n code) lijkt me dat er een waarde tussen de 0-255 opgeslagen wordt. Daar kun je vervolgens weer wat mee doen...