Zonnevolger

Het is voor mij alweer vele jaren geleden dat ik met PIC's bezig was, en moet er dus weer een beetje inkomen.
Ik Prog in MikroC pro, en een Ledje laten knipperen werkt (PIC16F876A), maar nu probeer ik een I2C Lcd display aan te sturen en dat krijg ik maar niet voor elkaar.
Omdat ik vroeger wel eens een I2C verbinding heb gemaakt met een PIC18 serie
heb ik dit ook geprobeerd met een PIC18F2580, maar ook daarbij krijg ik niets op het scherm.

Edit1:
De I2C bus werkt (PIC18F2580), en ook de RTC (DS1307) die op deze bus zit werkt inmiddels, maar helaas het Display nog niet.

Edit2:
Het display heb ik nu ook werkend.
De volgende uitdaging is het uitrekenen van de Zon stand.

Is het mogelijk om de besturing zo te maken dat er geen enkele actie is als de zon niet schijnt?

Dat lijkt me niet moeilijker dan een LDR aan een a/d ingang, die het omgevingslicht meet. En in de software regelen dat er niets gebeurt zolang deze LDR niet een minimum aan licht vaststelt.

Lambiek

Special Member

Op 9 juni 2023 11:34:53 schreef MMSoft:
De volgende uitdaging is het uitrekenen van de Zon stand.

Die had je toch al klaar?

Het berekenen van de stand van de Zon heb ik al klaar (met een Raspberry), dus de zonpositie en de zon hoogte/hoek weet ik.

Dat kun je toch overzetten naar de PIC18F2580, je zal het aan moeten passen maar de berekening heb je.

Op 11 juni 2023 15:24:54 schreef m.bouwer:
Is het mogelijk om de besturing zo te maken dat er geen enkele actie is als de zon niet schijnt?

Ja dat is mogelijk, ik heb daar een heel klein zonnepaneeltje voor gebruikt. En inderdaad ingelezen op een analoge ingang van de controller.

Maar waarom zou je dan geen actie willen?

Stel het is in de ochtend zonnig, om 9 uur wordt het bewolkt tot zeg 17.00. Als het dan weer zonnig wordt gaat je paneel never nooit de zon volgen, dat is wat ik ervaren heb.

Gewoon op de klok mee laten draaien, maar het is niet mijn project. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

@ Lambiek,

Het ligt voor de hand om jou te vragen of we de besturing mogen nabouwen.

Maar gegeven dat het een klein paneel is:
Denk je dat het mogelijk is om de besturing wat minder duur te maken?

Lambiek

Special Member

Van mij mag je het nabouwen. :) En de paneel grote maakt niet uit natuurlijk, kwestie van de aandrijving aanpassen.

En als je vragen hebt mag je me altijd een Email sturen.

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 11 juni 2023 16:29:11 schreef Lambiek:
Dat kun je toch overzetten naar de PIC18F2580, je zal het aan moeten passen maar de berekening heb je.

Dat heb ik nu ook werkend op de PIC. Doordat de PIC diverse routines mist die de Raspberry wel heeft kost het de nodige tijd, maar ik hoop deze week te zover te komen als dat ik was met de Raspberry...

Ik heb nog geen tijd gehad om naar een paneel van ca. 40 x 100 cm. met ingebouwde omvormer te zoeken, dus als iemand mij daarmee kan helpen...

Wie van jullie progt ook in MikroC Pro ?

Op 11 juni 2023 15:24:54 schreef m.bouwer:
Is het mogelijk om de besturing zo te maken dat er geen enkele actie is als de zon niet schijnt?

De standaard truuk van de omvormers is dat ze voor "eigen voeding" gewoon de energie van het paneel gebruiken.

In dit geval wil je dan misschien een supercap hebben die genoeg energie heeft om zodra de geleverde energie nul wordt, terugdraait naar "ochtendstand". Anderzijds, een wolk net voor zons-onder zou dat ook triggeren. Het alternatief is om 's ochtends te wachten tot je in de ongunstige situatie genoeg energie hebt om naar de optimale te draaien.

Of je moet op basis van het zonnepaneel opstarten en dan een netvoeding inschakelen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Lambiek

Special Member

Op 11 juni 2023 19:50:18 schreef m.bouwer:
Maar gegeven dat het een klein paneel is:

Hoe groot moet het eigenlijk worden?

Willen jullie (MMSoft en jij) er wel energie mee opwekken of is het meer om te kijken hoe het werkt?

Als je haar maar goed zit, GROETEN LAMBIEK.

Ik heb ook wel intresse in dit project,
mede omdat er in mijn buurt zo een opstelling staat.
Op een plat garagedak, een volledig in inox gebouwde constructie, met mooi geplooide buizen, een paneel of 6 dacht ik.

Als ik er nog es langskom zal ik stoppen en wat meer info vragen en fotos.

Deze zal wel wat zwaardere motoren gebruiken denk ik, maar het principe is zelfde.

Ik zou hier een opstelling willen maken van 4 panelen, draaien en kantelen.
Heb al 3f motorkes met reductiekast liggen, alu profielen, enkel nog 2dehands panelen.

ASPA-tech.be
Lambiek

Special Member

Op 12 juni 2023 10:41:07 schreef bordje:
Ik heb ook wel intresse in dit project,

Hoe meer zielen hoe meer vreugd. :)

Als ik er nog es langskom zal ik stoppen en wat meer info vragen en fotos.

Lijkt mij leuk.

Ik zou hier een opstelling willen maken van 4 panelen, draaien en kantelen.

Kantelen is niet echt noodzakelijk, maar het kan. In principe hoef je die maar drie maal per jaar te verstellen, maar met bijvoorbeeld harde wind is het wel weer makkelijk dat je het paneel horizontaal kan zetten.

Heb al 3f motorkes met reductiekast liggen, alu profielen, enkel nog 2dehands panelen.

Drie fase motoren is eigenlijk minder handig, maar het kan. Dan zou je er een frequentie regelaar voor moeten zetten, die kun je makkelijk aansturen met een controller via pwm met een laagdoorlaat filter en opamp. Dan creëer je een analoge uitgang.

Maar het aller mooiste is om een proportionele besturing te maken en dat kan als je op het paneel sensoren zet die naar de zon kijken. Ik weet zo niet of dat met een frequentie regelaar ook gaat. Met wat aanpassingen wel waarschijnlijk. Maar ik zou het niet via relais doen, dat wordt nogal een geklapper denk. :)

Ik vind persoonlijk een regeling met stappenmotoren het mooiste werken, dat regelt zo soepel en precies. Vooral als je micro stepping gebruikt.

Als je haar maar goed zit, GROETEN LAMBIEK.

Sowieso gebruik ik frequentieregelaars, heb normaal nog wat encoders liggen.
Dat maakt het dan compleet.

proportionele besturing is de bedoeling.

Ook dat de panelen volledig plat kunnen om uit de wind te kunnen. Want waar de panelen zullen komen kan het nogal hard waaien.

ASPA-tech.be
Lambiek

Special Member

Op 12 juni 2023 13:23:22 schreef bordje:
Sowieso gebruik ik frequentieregelaars, heb normaal nog wat encoders liggen.

Ik denk dat je die encoders niet eens nodig hebt.

Ik heb even een testje gedaan direct op de as van een drie fase motor met frequentieregelaar. Dit is zonder encoder, de positie en terugkoppeling wordt bepaald door de LDR's.

Zie filmpje.

https://www.youtube.com/shorts/kT1ywQSnvp8

Dit loopt uiteraard wat schokkerig, maar via een reductor gaat dat prima.

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 12 juni 2023 09:38:18 schreef Lambiek:Willen jullie (MMSoft en jij) er wel energie mee opwekken of is het meer om te kijken hoe het werkt?

Voor mij is het alleen een uitdaging om het werkend te krijgen, de opbrengst is niet zo belangrijk (wij hebben al 12 panelen op het dak liggen.

Ik heb inmiddels een begin:

Elke minuut wordt de zon positie uitgerekend, dit is niet zo vaak nodig, maar even als test

Vergelijk met https://www.suncalc.org

Lambiek

Special Member

Op 12 juni 2023 16:52:04 schreef MMSoft:
Voor mij is het alleen een uitdaging om het werkend te krijgen, de opbrengst is niet zo belangrijk (wij hebben al 12 panelen op het dak liggen.

Oké, ik ging ervan uit dat je grote panelen wilde gaan aansturen.

Ziet er goed uit, ben benieuwd naar het eindresultaat. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

De besturing is in ontwikkeling.
Daarnaast gaat het erom een stabiele weerbestendige constructie ( bevestiging aan de muur, rotatie-aandrijving en kanteling van het paneel ) in elkaar te zetten.

Lambiek

Special Member

Hier nog even hoe de opstelling was met de frequentieregelaar en de controller. Misschien heeft iemand er nog iets aan. Het toerental is nu even met een potmeter gedaan voor de test, maar dat kan ook via de controller. LDR_1 en LDR_2 zitten nu op de motor-as, op deze manier heb je gelijk een terugkoppeling van de positie. Normaal komen de beide LDR's boven het zonnepaneel samen met de zonnesensor.

Filmpje staat drie posten terug.

Hier nog een stukje code voor de test, het programma voor een zonnevolgsysteem wordt uiteraard een heel stuk groter. Zie artikel zonnevolger.

pic basic code:


Device 16F887                               ; Processor type

Xtal 10                                     ; Cristal 10Mhz

Asm                                         ; Config settings
CONFIG_REQ            
__CONFIG _CONFIG1, HS_OSC & WDT_OFF & DEBUG_OFF & FCMEN_OFF & LVP_OFF & IESO_OFF & BOR_OFF & CPD_OFF & CP_OFF & MCLRE_OFF & PWRTE_ON 
__CONFIG _CONFIG2, WRT_OFF & BOR40V 
EndAsm
   
All_Digital true                            ; Alle poorten digitaal

Declare Adin_Res = 10                       ; resolutie 10 bits
Declare Adin_Tad = frc                      ; set RC osc
Declare Adin_Stime = 50                     ; sample tijd 5

Declare LCD_RSPin PORTD.2                   ; Reset display poort D.2
Declare LCD_ENPin PORTD.3                   ; Enable display poort D.3
Declare LCD_DTPin PORTD.4                   ; Data display poort D.4 t/m D.7
Declare LCD_Lines 2                         ; Twee lijns display

;Declare Rsin_Pin  PORTB.0                   ; Data in is RX
;Declare Rsout_Pin PORTB.1                   ; Data uit is TX
;Declare Serial_Baud 9600                    ; Baudrate 2400
;Declare Serial_Data 8                       ; Acht bit data

;Declare Hserial_Baud   9600                 ; Set baudrate op 9600
;Declare Hserial_RCSTA  %10010000            ; Register instelling
;Declare Hserial_TXSTA  %10100110            ; Register instelling 
;Declare Hserial_Clear = On                  ; Reset buffer bij een overflow 

;Declare CCP1_Pin PORTC.2                    ; HPWM 1 op poort C.2
;Declare CCP2_Pin PORTC.1                    ; HPWM 2 op poort C.1

Symbol HYSTERESIS = 4                       ; Waarde Hysteresis

Symbol VRIJGAVE = PORTC.0                   ; Uitgang vrijgave
Symbol RECHTSOM = PORTC.1                   ; Uitgang rechtsom

Dim LDR_1 As Word                           ; Variabele LDR 1 
Dim LDR_2 As Word                           ; Variabele LDR 2

Cls                                         ; Wis display

DelayMS 1000                                ; Pauze 1 sec 

Clear                                       ; Wis geheugen

         ;543210                            ; Hulpregel poort A
PORTA  = %000000                            ; Maak poort A laag
TRISA  = %111111                            ; Poort_A I/O

         ;543210                            ; Hulpregel poort B
PORTB  = %000000                            ; Maak poort B laag
TRISB  = %000000                            ; Poort_B I/O

         ;76543210                          ; Hulpregel poort C
PORTC  = %00000000                          ; Maak poort C laag
TRISC  = %00000000                          ; Poort_C I/O

         ;76543210                          ; Hulpregel poort D
PORTD  = %00000000                          ; Maak poort D laag
TRISD  = %00000000                          ; Poort_D I/O

         ;210                               ; Hulpregel poort E 
PORTE  = %000                               ; Maak poort E laag
TRISE  = %000                               ; Poort_E I/O

        ;76543210                           ; Hulpregel analoog
ANSEL = %00000001                           ; ANSEL register analoog poort_A

         ;76543210                          ; Hulpregel analoog
ADCON0 = %00000011                          ; ADCON0 register analoog 8 bit

         ;76543210                          ; Hupregel analoog
ADCON1 = %10000000                          ; ADCON1 register analoog 10 bit

         ;76543210                          ; Hulpregel analoog poort_B
;ANSELH = %00000000                          ; ANSEL register analoog poort_B

;----------------------------------------------------------------
; TEST ZONNEVOLGER MET EEN DRIEFASE MOTOR EN FREQUENTIEREGELAAR.
;----------------------------------------------------------------

RUN:


    LDR_1  = ADIn 0
    LDR_2  = ADIn 1
    
    Print At 1,1,Dec,LDR_1
    Print At 2,1,Dec,LDR_2
    
    If LDR_1 > LDR_2 And LDR_1 - LDR_2 > HYSTERESIS Then
       VRIJGAVE = 1
       RECHTSOM  = 0
    EndIf
    
    If LDR_2 > LDR_1  And LDR_2 - LDR_1 > HYSTERESIS Then
       VRIJGAVE = 1
       RECHTSOM = 1
    EndIf
    
    If LDR_1 = LDR_2 Then
       VRIJGAVE = 0
       RECHTSOM = 0
    EndIf
              
GoTo RUN
  
End 


Als je haar maar goed zit, GROETEN LAMBIEK.

Opzet 2 fundatieframe met bovenste lager-ring.

Om de motor stroom te meten heb ik een INA219.
Deze werkt ook via de I2C bus (net zoals het Display en de RTC die goed werken) maar helaas krijg ik uit deze INA219 nog geen data.

Zo lees ik als voorbeeld de RTC (DS1307) uit:

code:


unsigned short int RTC_SEC;  //8 Bits getal


void RTC_Read()  //DS1307
{
  i2c_start();          

  i2c_write(0xD0);     //slave address     
  i2c_write(0x00);     //address of seconds register     

  I2C_Restart();

  i2c_write(0xD1);     //slave address, read mode     

  RTC_SEC   = i2c_Read(1);  //Adres 0 (Seconden)
  RTC_MIN   = i2c_Read(1);  //Adres 1 (Minuten)
  RTC_UUR   = I2C_Read(1);  //Adres 2 (Uren)
  RTC_DAG_W = I2C_Read(1);  //Adres 3 (Dag v.d. Week)
  RTC_DAG_M = I2C_Read(1);  //Adres 4 (Dag v.d. Maand)
  RTC_MAAND = I2C_Read(1);  //Adres 5 (Maand)
  RTC_JAAR  = I2C_Read(0);  //Adres 6 (Jaar)

  i2c_stop();         
}

Maar dit werkt niet:

code:


unsigned short int INA219_A;  //8 Bits getal
unsigned int INA219_B;        //16 Bits getal


void INA219_Read() 
{
  i2c_start();

  i2c_Write(0x40);     //slave address
  i2c_Write(0x00);     //address of seconds register

  i2c_Restart();

  i2c_Write(0xD1);     //slave address, read mode
  //i2c_Write(0x41);     //slave address with read mode */

  //INA219_A = I2C_Read(0);  //Data op Adres 0
  INA219_B = I2C_Read(0);  //Data op Adres 0

  i2c_stop();         

}

Omdat dit IC 16 bits registers heeft, gebruik ik nu ook een 16 bits variabele mogelijk zit hier het probleem.
Bij het RTC IC moet het slave address in read mode gezet worden (als ik het goed begrijp), maar is dat bij de INA219 anders denken jullie ?

Ik probeer van alles maar krijg het niet werkend, wat doe ik verkeerd denken jullie ?

Datasheet
https://www.ti.com/lit/ds/symlink/ina219.pdf?HQS=TI-null-null-alldatas…

Edit:
Ik krijg er inmiddels data uit, deze is nog wisselvallig en dus nog niet goed bruikbaar maar er is een begin. Hulp en info blijven welkom...

Het fundatieframe met dummypaneel in de 0-graden beginstand ( loodlijn )

De onderste pivot-lager is hier nog niet gemonteerd.

Het fundatieframe met daarin ook de rotatie en kantelaandrijving krijgt een polyester kastje.

Kantelen:
Het lijkt mij dat ik wel bij 10 graden kan beginnen.
Voor de opbrengst gaat het nagenoeg niets uitmaken en het voordeel is dat het de slag beperkt.

Lambiek

Special Member

Op 18 juni 2023 09:55:15 schreef m.bouwer:
Kantelen:
Het lijkt mij dat ik wel bij 10 graden kan beginnen.
Voor de opbrengst gaat het nagenoeg niets uitmaken en het voordeel is dat het de slag beperkt

Hier staat de instellingen per maand.

https://www.circuitsonline.net/files/images/000804.png

Als je haar maar goed zit, GROETEN LAMBIEK.

Zo te zien moet het paneel in dec/jan in de loop van de dag naar 20 graden en terug kantelen.

Het gaat er mij bij het maken van de staander achter het paneel nu om of ik die staander 10 graden achterover ga laten neigen.

Lambiek

Special Member

Op 18 juni 2023 14:45:33 schreef m.bouwer:
Zo te zien moet het paneel in dec/jan in de loop van de dag naar 20 graden en terug kantelen.

Het paneel mag de hele maand op 20° blijven staan, dat staat het paneel loodrecht op de zon gericht. Als hij er is tenminste. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Als je de as waar de boel om draait op 52 graden t.o.v. horizontaal zet, dan kan je hem in dec-jan op -20 graden zetten t.o.v de middelloodlijn van de as. En in mrt OP de middelloodlijn en in jun jul op +20. Dan kan je wegkomen met "1x per maand verzetten. Maar als het dagelijkse draaien gebeurt om een as die verticaal staat, dan moet je denk ik ook de andere hoek minstens 1x per uur bijstellen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/