marinizzo Postat Octombrie 11, 2019 Partajează Postat Octombrie 11, 2019 Acum 22 ore, gsabac a spus: Varianta cu uC este la alegerea dvs. puteti incerca pentru inceput sa postati o schema pe topic sau un cod cu orice de folos pentru inceput. Deoarece am vazut ca va interesati despre ce realizari sunt pe internet, poate doriti sa postati o schema de acolo sau ceva util. CD4098BM este foarte bun si foarte ieftin, circa 3 lei iar schema completa ar fi ca in poza. @gsabac salut, pentru inceput am sa comand piesele pentru schema de mai sus si am sa fac acst montaj, la varianta cu uC pe care o doream nu este vorba ca ma intereseaza realizarile dupa internet ,ma intereseaza doar codul care sa functioneze cum am mai gasit . am sa postez o schema cu un mic circuit pentru care ma intereseaza acel cod si am sa postez o alta schema plus codul pentru ea in vederea modificari lui pentru uC-ul care ma intereseaza acum daca este posibil, am sa detaliez pe cat de bine ma pricep . uC-ul care vreau sa-l folosesc este un 10f200 ,am ales acest uC pentru ca este ieftin si foarte mic, l-am gasit in capsula SOT23-6 si schema cu montajul ar arata cam asa . modul de lucru care vreau sa fie este simplu , la apasarea intrerupatorului si mentinerea (cuplat) Q1 va deschide pentru o perioada scurta de timp(200-300 ms) si va ramene inchis pana cand intrerupatorul va fii (decupla) moment in care Q1 va deschide din nou aceasi perioadade timp(200-300ms) si va ramane inchis , ce vreau sa se intample este ca atunci cand uC-ul este alimentat sa nu deschida Q1. montajul acesta este cu 12f675 si functioneaza in felul urmator , la apasarea scurta a butonului (maxim 300ms) Q1 este deschis dupa aproximativ 2secunde este deschis si Q2 si raman deschisi pana la o noua comanda , la apasarea butonului din nou pentru un timp scurt, Q2 inchide inchide in timp ce Q1 mai ramane deschis pentru 2minute urmand ca si el sa se inchida dupa ce trec cele 2 minute, codul montajului cu pic12f675 este acesta ;---------------------------------------------------------- ; Code Produced by the Proton Compiler. Ver 3.5.2.7 ; Copyright Rosetta Technologies/Crownhill Associates Ltd ; Written by Les Johnson. November 2011 ;---------------------------------------------------------- ; #define CONFIG_REQ 1 LIST P = 12F675, F = INHX8M, W = 2, X = ON, R = DEC, MM = ON, N = 0, C = 255 INDF equ 0X0000 TMR0 equ 0X0001 PCL equ 0X0002 STATUS equ 0X0003 FSR equ 0X0004 GPIO equ 0X0005 PORTB equ 0X0005 PCLATH equ 0X000A INTCON equ 0X000B PIR1 equ 0X000C TMR1L equ 0X000E TMR1LH equ 0X000F TMR1H equ 0X000F T1CON equ 0X0010 CMCON equ 0X0019 ADRESLH equ 0X001E ADRESH equ 0X001E ADCON0 equ 0X001F OPTION_REG equ 0X0081 TRISIO equ 0X0085 TRISB equ 0X0085 PIE1 equ 0X008C PCON equ 0X008E OSCCAL equ 0X0090 WPU equ 0X0095 IOC equ 0X0096 IOCB equ 0X0096 VRCON equ 0X0099 EEDATL equ 0X009A EEDATA equ 0X009A EEDAT equ 0X009A EEADR equ 0X009B EECON1 equ 0X009C EECON2 equ 0X009D ADRESL equ 0X009E ANSEL equ 0X009F IRP=7 RP1=6 RP0=5 NOT_TO=4 NOT_PD=3 Z=2 DC=1 C=0 GP5=5 GPIO5=5 GP4=4 GPIO4=4 GP3=3 GPIO3=3 GP2=2 GPIO2=2 GP1=1 GPIO1=1 GP0=0 GPIO0=0 GIE=7 PEIE=6 T0IE=5 INTE=4 GPIE=3 T0IF=2 INTF=1 GPIF=0 EEIF=7 ADIF=6 CMIF=3 T1IF=0 TMR1IF=0 TMR1GE=6 T1CKPS1=5 T1CKPS0=4 T1OSCEN=3 NOT_T1SYNC=2 TMR1CS=1 TMR1ON=0 COUT=6 CINV=4 CIS=3 CM2=2 CM1=1 CM0=0 ADFM=7 VCFG=6 CHS1=3 CHS0=2 GO=1 NOT_DONE=1 GO_DONE=1 PP_GO_DONE=1 ADON=0 NOT_GPPU=7 INTEDG=6 T0CS=5 T0SE=4 PSA=3 PS2=2 PS1=1 PS0=0 EEIE=7 ADIE=6 CMIE=3 T1IE=0 TMR1IE=0 NOT_POR=1 NOT_BOD=0 CAL5=7 CAL4=6 CAL3=5 CAL2=4 CAL1=3 CAL0=2 IOCB5=5 IOCB4=4 IOCB3=3 IOCB2=2 IOCB1=1 IOCB0=0 IOC5=5 IOC4=4 IOC3=3 IOC2=2 IOC1=1 IOC0=0 VREN=7 VRR=5 VR3=3 VR2=2 VR1=1 VR0=0 WRERR=3 PP_WRERR=3 WREN=2 PP_WREN=2 WR=1 PP_WR=1 RD=0 PP_RD=0 ADCS2=6 ADCS1=5 ADCS0=4 ANS3=3 ANS2=2 ANS1=1 ANS0=0 __MAXRAM 0XFF __BADRAM 0X06-0X09, 0X0D, 0X11-0X18, 0X1A-0X1D, 0X60-0X7F __BADRAM 0X86-0X89, 0X8D, 0X8F, 0X91-0X94, 0X97-0X98, 0XE0-0XFF CPD_ON equ 0X3EFF CPD_OFF equ 0X3FFF CP_ON equ 0X3F7F CP_OFF equ 0X3FFF BODEN_ON equ 0X3FFF BODEN_OFF equ 0X3FBF MCLRE_ON equ 0X3FFF MCLRE_OFF equ 0X3FDF PWRTE_OFF equ 0X3FFF PWRTE_ON equ 0X3FEF WDT_ON equ 0X3FFF WDT_OFF equ 0X3FF7 LP_OSC equ 0X3FF8 XT_OSC equ 0X3FF9 HS_OSC equ 0X3FFA EC_OSC equ 0X3FFB INTRC_OSC_NOCLKOUT equ 0X3FFC INTRC_OSC_CLKOUT equ 0X3FFD EXTRC_OSC_NOCLKOUT equ 0X3FFE EXTRC_OSC_CLKOUT equ 0X3FFF BOREN_OFF equ 0X0000 BOREN_ON equ 0X0040 FOSC_EC equ 0X0003 FOSC_EXTRCCLK equ 0X0007 FOSC_EXTRCIO equ 0X0006 FOSC_HS equ 0X0002 FOSC_INTRCCLK equ 0X0005 FOSC_INTRCIO equ 0X0004 FOSC_LP equ 0X0000 FOSC_XT equ 0X0001 WDTE_OFF equ 0X0000 WDTE_ON equ 0X0008 #define __12F675 1 #define XTAL 4 #define _CORE 14 #define _MAXRAM 64 #define _RAM_END 0X0040 #define _MAXMEM 1024 #define _ADC 4 #define _ADC_RES 10 #define _EEPROM 128 #define _PAGES 1 #define _BANKS 1 #define RAM_BANKS 1 #define _USART 0 #define _USB 0 #define _FLASH 0 #define _CWRITE_BLOCK 0 #define BANK0_START 0X20 #define BANK0_END 0X5F #define _SYSTEM_VARIABLE_COUNT 11 ram_bank = 0 CURRENT@PAGE = 0 DEST@PAGE = 0 #define LCD#TYPE 0 f@call macro PDEST if(PDEST < 1) else if(PDEST > $) else endif endif call PDEST endm F@JUMP macro PDEST if(PDEST < 1) else if(PDEST > $) else endif endif goto PDEST endm set@page macro PDEST endm s@b macro pVarin if((pVarin & 384) == 0) if(ram_bank == 1) bcf 3,5 endif if(ram_bank == 2) bcf 3,6 endif if(ram_bank == 3) bcf 3,5 bcf 3,6 endif ram_bank = 0 endif if((pVarin & 384) == 128) if(ram_bank == 0) bsf 3,5 endif if(ram_bank == 2) bsf 3,5 bcf 3,6 endif if(ram_bank == 3) bcf 3,6 endif ram_bank = 1 endif endm r@b macro if((ram_bank & 1) != 0) bcf 3,5 endif ram_bank = 0 endm jump macro PLABEL goto PLABEL endm wreg_byte macro pByteOut s@b pByteOut movwf pByteOut r@b endm wreg_bit macro pVarOut,pBitout s@b pVarOut andlw 1 btfsc STATUS,2 bcf pVarOut,pBitout btfss STATUS,2 bsf pVarOut,pBitout r@b endm wreg_word macro pWordOut s@b pWordOut movwf pWordOut s@b pWordOut+1 clrf pWordOut+1 r@b endm wreg_dword macro pDwordOut s@b pDwordOut+3 clrf pDwordOut+3 s@b pDwordOut+2 clrf pDwordOut+2 s@b pDwordOut+1 clrf pDwordOut+1 s@b pDwordOut movwf pDwordOut r@b endm byte_wreg macro pByteIn s@b pByteIn movf pByteIn,W r@b endm num_wreg macro pNumIn movlw (pNumIn & 255) endm num_byte macro pNumIn,pByteOut s@b pByteOut if(pNumIn == 0) clrf pByteOut else movlw (pNumIn & 255) movwf pByteOut endif r@b endm num_bit macro pNumIn,pVarOut,pBitout s@b pVarOut if((pNumIn & 1) == 1) bsf pVarOut,pBitout else bcf pVarOut,pBitout endif r@b endm num_word macro pNumIn,pWordOut if((pNumIn & 255) == 0) s@b pWordOut clrf pWordOut else s@b pWordOut movlw low (pNumIn) movwf pWordOut endif if(((pNumIn >> 8) & 255) == 0) s@b pWordOut+1 clrf pWordOut+1 else s@b pWordOut+1 movlw high (pNumIn) movwf pWordOut+1 endif r@b endm num_dword macro pNumIn,pDwordOut if ((pNumIn >> 24 & 255) == 0) s@b pDwordOut+3 clrf pDwordOut+3 else s@b pDwordOut+3 movlw ((pNumIn >> 24) & 255) movwf pDwordOut+3 endif if( ((pNumIn >> 16) & 255) == 0) s@b pDwordOut+2 clrf pDwordOut+2 else s@b pDwordOut+2 movlw ((pNumIn >> 16) & 255) movwf pDwordOut+2 endif if( ((pNumIn >> 8) & 255) == 0) s@b pDwordOut+1 clrf pDwordOut+1 else s@b pDwordOut+1 movlw high (pNumIn) movwf pDwordOut+1 endif if((pNumIn & 255) == 0) s@b pDwordOut clrf pDwordOut else s@b pDwordOut movlw low (pNumIn) movwf pDwordOut endif r@b endm bit_wreg macro pVarin,pBitIn s@b pVarin clrw btfsc pVarin,pBitIn movlw 1 r@b endm bit_byte macro pVarin,pBitIn,pByteOut s@b pVarin clrw btfsc pVarin,pBitIn movlw 1 s@b pByteOut movwf pByteOut r@b endm bit_bit macro pVarin,pBitIn,pVarOut,pBitout if((pVarin & 65408) == (pVarOut & 65408)) s@b pVarOut btfsc pVarin,pBitIn bsf pVarOut,pBitout btfss pVarin,pBitIn bcf pVarOut,pBitout else s@b pVarin clrdc btfsc pVarin,pBitIn setdc s@b pVarOut skpndc bsf pVarOut,pBitout skpdc bcf pVarOut,pBitout endif endm bit_word macro pVarin,pBitIn,pWordOut s@b pWordOut+1 clrf pWordOut+1 bit_byte pVarin,pBitIn,pWordOut endm bit_dword macro pVarin,pBitIn,pDwordOut s@b pDwordOut+3 clrf pDwordOut+3 s@b pDwordOut+2 clrf pDwordOut+2 s@b pDwordOut+1 clrf pDwordOut+1 bit_byte pVarin,pBitIn,pDwordOut endm word_wreg macro pWordIn byte_wreg pWordIn endm word_byte macro pWordIn,pByteOut byte_byte pWordIn,pByteOut endm word_bit macro pWordIn,pVarOut,pBitout byte_bit pWordIn, pVarOut, pBitout endm word_word macro pWordIn,pWordOut s@b pWordIn+1 movf pWordIn+1,W s@b pWordOut+1 movwf pWordOut+1 byte_byte pWordIn,pWordOut endm word_dword macro pWordIn,pDwordOut s@b pDwordOut+3 clrf pDwordOut+3 s@b pDwordOut+2 clrf pDwordOut+2 byte_byte pWordIn+1,pDwordOut+1 byte_byte pWordIn,pDwordOut endm byte_byte macro pByteIn,pByteOut s@b pByteIn movf pByteIn,W s@b pByteOut movwf pByteOut r@b endm byte_word macro pByteIn,pWordOut s@b pWordOut+1 clrf pWordOut+1 byte_byte pByteIn,pWordOut endm byte_dword macro pByteIn,pDwordOut s@b pDwordOut+3 clrf pDwordOut+3 s@b pDwordOut+2 clrf pDwordOut+2 s@b pDwordOut+1 clrf pDwordOut+1 byte_byte pByteIn,pDwordOut endm byte_bit macro pByteIn,pVarOut,pBitout if((pByteIn & 65408) == (pVarOut & 65408)) s@b pByteIn btfsc pByteIn,0 bsf pVarOut,pBitout btfss pByteIn,0 bcf pVarOut,pBitout else s@b pByteIn rrf pByteIn,W s@b pVarOut skpnc bsf pVarOut,pBitout skpc bcf pVarOut,pBitout endif r@b endm dword_wreg macro pDwordIn byte_wreg pDwordIn endm dword_byte macro pDwordIn,pByteOut byte_byte pDwordIn,pByteOut endm dword_word macro pDwordIn,pWordOut s@b pDwordIn+1 movf pDwordIn+1,W s@b pWordOut+1 movwf pWordOut+1 byte_byte pDwordIn,pWordOut endm dword_dword macro pDwordIn,pDwordOut byte_byte pDwordIn+3,pDwordOut+3 byte_byte pDwordIn+2,pDwordOut+2 byte_byte pDwordIn+1,pDwordOut+1 byte_byte pDwordIn,pDwordOut endm dword_bit macro pDwordIn,pVarOut,pBitout byte_bit pDwordIn,pVarOut,pBitout endm variable CURRENT@PAGE = 0 variable PDESTINATION@PAGE = 0 FIND@PAGE macro pLabelIn local CURRENT_ADDR = $ local DEST_ADDR = pLabelIn if((CURRENT_ADDR >= 0X1800) && (CURRENT_ADDR <= 0X2000)) CURRENT@PAGE = 3 endif if((CURRENT_ADDR >= 0X1000) && (CURRENT_ADDR <= 0X1800)) CURRENT@PAGE = 2 endif if((CURRENT_ADDR >= 0X0800) && (CURRENT_ADDR <= 0X1000)) CURRENT@PAGE = 1 endif if((CURRENT_ADDR >= 0) && (CURRENT_ADDR <= 0X0800)) CURRENT@PAGE = 0 endif if((DEST_ADDR >= 0X1800) && (DEST_ADDR <= 0X2000)) PDESTINATION@PAGE = 3 endif if((DEST_ADDR >= 0X1000) && (DEST_ADDR <= 0X1800)) PDESTINATION@PAGE = 2 endif if((DEST_ADDR >= 0X0800) && (DEST_ADDR <= 0X1000)) PDESTINATION@PAGE = 1 endif if((DEST_ADDR >= 0) && (DEST_ADDR <= 0X0800)) PDESTINATION@PAGE = 0 endif endm NUM_FSR macro pNumIn num_byte pNumIn, FSR if (((pNumIn >> 8) & 255) == 1) bsf STATUS,7 else bcf STATUS,7 endif endm label_word macro pLabelIn,pWordOut movlw low (pLabelIn) s@b pWordOut movwf pWordOut movlw high (pLabelIn) s@b pWordOut movwf pWordOut+1 r@b endm GEN = 32 GENH = 33 PP0 = 34 PP0H = 35 PP1 = 36 PP1H = 37 PP2 = 38 PP5 = 39 PP5H = 40 PP6 = 41 PP6H = 42 b0 = 43 numarator = 44 numaratorH = 45 #define releu1 GPIO,2 #define releu2 GPIO,4 #define buton GPIO,5 #define __XTAL 4 proton#code#start org 0 goto proton#main#start BUT@N movwf 38 movf 32,W movwf 4 movf 33,W bsf 4,7 iorwf 0,F bcf 4,7 andwf 0,W btfss 41,0 xorwf 33,W skpnz goto $ + 20 movf 38,W skpz goto $ + 9 movf 39,W addlw 255 skpc goto $ + 14 movlw 50 call DL@MS movf 39,W goto $ + 10 incf 38,W movlw 255 skpnz goto $ + 5 decfsz 38,W goto $ + 3 movf 40,W goto $ + 2 comf 42,F rrf 42,F goto I@NT DL@MS clrf 37 DLY@W movwf 36 DLY@P movlw 255 addwf 36,F skpc addwf 37,F skpc goto I@NT movlw 3 movwf 35 movlw 223 call DLUS@W goto DLY@P DL@US clrf 35 DLUS@W addlw 232 movwf 34 comf 35,F movlw 252 skpc goto $ + 4 addwf 34,F skpnc goto $ - 2 addwf 34,F nop incfsz 35,F goto $ - 6 btfsc 34,0 goto $ + 1 btfss 34,1 goto $ + 3 nop goto $ + 1 return I@NT bcf 3,7 I@NT2 bcf 3,5 bcf 3,6 return proton#main#start clrf 3 F2_SOF equ $ ; RELEU.PRP F2_EOF equ $ ; RELEU.PRP F1_SOF equ $ ; RELEU.BAS F1_000003 equ $ ; IN [RELEU.BAS] CMCON=7 movlw 7 movwf CMCON F1_000004 equ $ ; IN [RELEU.BAS] ANSEL=0 bsf STATUS,5 ram_bank = 1 clrf ANSEL F1_000013 equ $ ; IN [RELEU.BAS] NUMARATOR = 0 bcf STATUS,5 ram_bank = 0 clrf numaratorH clrf numarator F1_000015 equ $ ; IN [RELEU.BAS] LOW RELEU1 bsf STATUS,5 ram_bank = 1 bcf TRISB,2 bcf STATUS,5 ram_bank = 0 bcf GPIO,2 F1_000016 equ $ ; IN [RELEU.BAS] LOW RELEU2 bsf STATUS,5 ram_bank = 1 bcf TRISB,4 bcf STATUS,5 ram_bank = 0 bcf GPIO,4 main F1_000019 equ $ ; IN [RELEU.BAS] NUMARATOR = 0 clrf numaratorH clrf numarator F1_000020 equ $ ; IN [RELEU.BAS] BUTTON GPIO.5,0,255,100,B0,1,SECVENTA_START movlw GPIO movwf GEN movlw 32 movwf GENH clrf PP6 movlw 255 movwf PP5 movlw 100 movwf PP5H movlw 1 movwf PP6H movf b0,W call BUT@N movwf b0 btfsc STATUS,0 goto secventa_start F1_000021 equ $ ; IN [RELEU.BAS] GOTO MAIN goto main secventa_start F1_000024 equ $ ; IN [RELEU.BAS] HIGH RELEU1 bsf STATUS,5 ram_bank = 1 bcf TRISB,2 bcf STATUS,5 ram_bank = 0 bsf GPIO,2 F1_000025 equ $ ; IN [RELEU.BAS] DELAYMS 3000 movlw 11 movwf PP1H movlw 184 call DLY@W F1_000026 equ $ ; IN [RELEU.BAS] HIGH RELEU2 bsf STATUS,5 ram_bank = 1 bcf TRISB,4 bcf STATUS,5 ram_bank = 0 bsf GPIO,4 secventa_start1 F1_000029 equ $ ; IN [RELEU.BAS] BUTTON GPIO.5,0,255,100,B0,1,SECVENTA_STOP movlw GPIO movwf GEN movlw 32 movwf GENH clrf PP6 movlw 255 movwf PP5 movlw 100 movwf PP5H movlw 1 movwf PP6H movf b0,W call BUT@N movwf b0 btfsc STATUS,0 goto secventa_stop F1_000030 equ $ ; IN [RELEU.BAS] GOTO SECVENTA_START1 goto secventa_start1 secventa_stop F1_000033 equ $ ; IN [RELEU.BAS] LOW RELEU2 bsf STATUS,5 ram_bank = 1 bcf TRISB,4 bcf STATUS,5 ram_bank = 0 bcf GPIO,4 asteptare F1_000036 equ $ ; IN [RELEU.BAS] NUMARATOR = NUMARATOR + 1 incf numarator,F btfsc STATUS,2 incf numaratorH,F F1_000037 equ $ ; IN [RELEU.BAS] IF NUMARATOR = 180 THEN LOW RELEU1 : GOTO MAIN movf numarator,W xorlw 180 iorwf numaratorH,W btfss STATUS,2 goto BC@LL2 bsf STATUS,5 ram_bank = 1 bcf TRISB,2 bcf STATUS,5 ram_bank = 0 bcf GPIO,2 goto main BC@LL2 F1_000038 equ $ ; IN [RELEU.BAS] DELAYMS 1000 movlw 3 movwf PP1H movlw 232 call DLY@W F1_000039 equ $ ; IN [RELEU.BAS] GOTO ASTEPTARE goto asteptare F1_EOF equ $ ; RELEU.BAS PB@LB4 goto PB@LB4 __EOF __config INTRC_OSC_NOCLKOUT&MCLRE_OFF&WDT_OFF&PWRTE_ON end Link spre comentariu
gsabac Postat Octombrie 11, 2019 Partajează Postat Octombrie 11, 2019 (editat) Imi place schema din Proteus prin simplitatea ei, dar nu pot sa particip la topic cu uC-ul PIC10F200 deoarece compilatorul mikroC ( care creaza fisierul HEX) pe care il folosesc nu are acest uC. Programul pe care l-ati prezentat este o combinatie de ASM si Basic pe care nu am mai vazut-o, foarte laborioasa si cred ca este de pe la inceputuri. Eu folosesc mikroC PRO for PIC de la Mikroelectronica, care se poate descarca ca demo gratuit, foarte bun pentru proiecte mici. Poate alegeti un P10FXXX din lista sau mai puternic, 12F, 16F,... si apropo despre programul scris in limbajul mikroC, are doar cateva randuri usor de inteles. Pentru un PIC in capsula SOT23-6LEAD trebuie si un programator care sa contina un adaptor pentru aceasta capsula, deasemenea si pentru alt pic trebuie vazut daca programatorul il are in lista. @gsabac Editat Octombrie 11, 2019 de gsabac Link spre comentariu
marinizzo Postat Octombrie 11, 2019 Partajează Postat Octombrie 11, 2019 Acum 4 ore, gsabac a spus: Imi place schema din Proteus prin simplitatea ei, dar nu pot sa particip la topic cu uC-ul PIC10F200 deoarece compilatorul mikroC ( care creaza fisierul HEX) pe care il folosesc nu are acest uC. Programul pe care l-ati prezentat este o combinatie de ASM si Basic pe care nu am mai vazut-o, foarte laborioasa si cred ca este de pe la inceputuri. Eu folosesc mikroC PRO for PIC de la Mikroelectronica, care se poate descarca ca demo gratuit, foarte bun pentru proiecte mici. Poate alegeti un P10FXXX din lista sau mai puternic, 12F, 16F,... si apropo despre programul scris in limbajul mikroC, are doar cateva randuri usor de inteles. Pentru un PIC in capsula SOT23-6LEAD trebuie si un programator care sa contina un adaptor pentru aceasta capsula, deasemenea si pentru alt pic trebuie vazut daca programatorul il are in lista. @gsabac salut , multumesc,schema trebuie sa fie simpla ca montajul sa fie foarte mic , am inteles ca,compilatorul nu cunoaste acel uC, ,programatorul pe care il am eu cunoaste 10f200 si inca cateva 10f2xx dar am observat ca mikroC stie doar de la 10f3xxam incercat sa caut timp de 2 ore un uC sa fie mic ca dimensiune sa fie macar la fel de ieftin ca acel 10f200 si sa fie cunoscut si de mikroC si de programatorul meu , intr-un final am ajuns la concluzia ca pana la urma 12F675 ar fii cel mai potrivit ,mai aveam inca vre-o 2 12fxxx dar se pare ca cel mai convenabil este acesta 12f675 este in jur de 6 lei il cunoaste si programatorul meu si compilatorul. in legatura cu adaptorul pentru capsula SOT23-6 nu ar fii fost o problema , si pentru pic12f SMD am construit un adaptor . montajul cu cd4098 l-am simulat astazi in proteus si functioneaza chiar bine, dezavantajul este ca iese destul de mare montajul in comparatie cu cel cu uC,am 5 rezistori si 3 condensatori ca si componete sms prefer sa lucrez cu 1206 care sunt putin mai maricele si mai usor de lipit ,am vrut sa comand piesele ,toate bune am gasit tot ce imi trebuie pe TME dar cand am ajuns la condensatori , site-ul ma obliga sa cumpar minim100 de bucati si nu stiu de ce sunt si foarte scumpi in comaparatie cu rezistentele smd 100 de condensatori ajungeau pe la 40 de lei, oricum am sa merg la un magazin fizic cu componete sa cumapr la bucata dar pana ajung acolo mai dureaza si poate rezolv mai simplu cu pic. codul care l-am postat nu este scris de mine ,habar nu aveam ca este o combinatie dar ideea este ca merge foarte bine Link spre comentariu
marinizzo Postat Octombrie 11, 2019 Partajează Postat Octombrie 11, 2019 La 09.10.2019 la 12:35, informer a spus: Sonoff-ul ala contine un ESP8266 care are deja in el un microcontroler mai potent decat acele PIC-uri. Daca vrei sa iesi cel mai ieftin, poti sa nu mai cumperi nici un PIC ci sa programezi uC-ul existent sa recunoasca deschiderea/inchiderea intrerupatorului, egal ca-i cu retinere sau fara. Cauta pe net si ai sa gasesti modul de programare pt. Sonoff folosind (tentativa de) IDE Arduino. m-am documentat putin si exista o problema destul de mare pe cat de simplu pare pentru dumneavoastra , pe langa ca trebuie achizitionat programator atunci cand releul este flashuit butonul lui nu mai are functia de quick pairing si devine foarte enervant dupa ce montezi 5 intrerupatoare in doza sa le reconectezi la rooter cand trebuie schmbat , adica stai sa demontezi fiecare releu sa il conectezi pe programator si sa il reconfigurezi pe laptop Link spre comentariu
informer Postat Octombrie 11, 2019 Partajează Postat Octombrie 11, 2019 Acum 29 minute, marinizzo a spus: m-am documentat putin si exista o problema destul de mare pe cat de simplu pare pentru dumneavoastra , pe langa ca trebuie achizitionat programator atunci cand releul este flashuit butonul lui nu mai are functia de quick pairing si devine foarte enervant dupa ce montezi 5 intrerupatoare in doza sa le reconectezi la rooter cand trebuie schmbat , adica stai sa demontezi fiecare releu sa il conectezi pe programator si sa il reconfigurezi pe laptop "Problema mare" este o notiune relativa. Exista un cod pe care poti sa-l incluzi in ceea ce urmeaza sa programezi si care se cheama WiFiManager, il gasesti si-n "IDE"-ul Arduino odata instalata extensia pt. ESP8266. https://github.com/tzapu/WiFiManager Asta practic incearca sa se conecteze ca si client la WiFi iar daca nu reuseste, si n-o sa reuseasca niciodata daca schimbi router-ul, seteaza ESP-ul in modul AP (Access Point) si-ti genereaza in browser o pagina unde poti introduce SSID-ul si parola WiFi-ului dorit... dupa care la reset iar incearca sa se conecteze de data asta cu noile credentiale... daca reuseste OK, devine client, daca nu se repeta procedura. Pare complicat dar nu-i, doar chestie de practica... toate intrerupatoarele de la mine din casa merg asa... . P.S. "Programatorul" este de fapt un convertor USB la serial. Link spre comentariu
Ticu Postat Octombrie 11, 2019 Partajează Postat Octombrie 11, 2019 (editat) La 10.10.2019 la 10:32, marinizzo a spus: eu nu gasesc de cumparat HEF4098BT, eu gasesc doar HEF4093BT ,,,, este diferenta intre ele ? ... am vazut ca HEF4093BT are cam un cm lungime si daca reusesc sa il fac de 2 pe 2 cm ,cred ca este perfect 4093 contine 4 porti NAND cu cate 2 intrari cu trigger Schmitt. Pot fi folosite ca inversoare si poti face asa ceva, dar cum numarul pieselor a crescut fata de schema precedenta, cred ca nu mai este cazul. Editat Octombrie 11, 2019 de Ticu Link spre comentariu
marinizzo Postat Octombrie 11, 2019 Partajează Postat Octombrie 11, 2019 Acum 16 minute, Ticu a spus: 4093 contine 4 porti NAND cu cate 2 intrari cu trigger Schmitt. Pot fi folosite ca inversoare si poti face asa ceva, dar cum numarul pieselor a crescut, cred ca nu mai e cazul. ticu, multumesc mult pentru scheme , am simulat in proteus pe prima , lucreaza perfect si am sa ma duc sa cumpar piesele pentru ea sa o pun in practica Link spre comentariu
marinizzo Postat Octombrie 11, 2019 Partajează Postat Octombrie 11, 2019 Acum 53 minute, informer a spus: "Problema mare" este o notiune relativa. Exista un cod pe care poti sa-l incluzi in ceea ce urmeaza sa programezi si care se cheama WiFiManager, il gasesti si-n "IDE"-ul Arduino odata instalata extensia pt. ESP8266. https://github.com/tzapu/WiFiManager Asta practic incearca sa se conecteze ca si client la WiFi iar daca nu reuseste, si n-o sa reuseasca niciodata daca schimbi router-ul, seteaza ESP-ul in modul AP (Access Point) si-ti genereaza in browser o pagina unde poti introduce SSID-ul si parola WiFi-ului dorit... dupa care la reset iar incearca sa se conecteze de data asta cu noile credentiale... daca reuseste OK, devine client, daca nu se repeta procedura. Pare complicat dar nu-i, doar chestie de practica... toate intrerupatoarele de la mine din casa merg asa... . P.S. "Programatorul" este de fapt un convertor USB la serial. informer, daca este chiar asa de usor cum spuneti si ati facut asta de multe ori , puteti sa faceti un tutorial aici ca sa ramana pentru toti incepatorii cu pasi care trebuiesc urmati, ce aplicatii trebuiesc folisite, si chiar link-uri directe ..., eu cred ca nu sunt singurul care vrea sa faca modificarea si vor aparea din ce in ce mai multi care doresc asta , pentru un inepator "Exista un cod pe care poti sa-l incluzi in ceea ce urmeaza sa programezi si care se cheama WiFiManager" este destul de greu , eu abea am invatat sa compilez un ASM si sa il scriu pe un pic sa mai si implementez un cod pentru mine pare extrem de greu sau daca nu , puteti oferi un link spre un videotutorial care explica pas cu pas ce trebuie facut din momentul cand conectzi releul la portul usb si pana in momenutl cand ii aloci ip-ul ? pentru ca din ce vad ,dumneavoastra imi spuneti de "ide"-ul arduino iar pe net ba aud de tasmota ba aud de openhab. Link spre comentariu
informer Postat Octombrie 11, 2019 Partajează Postat Octombrie 11, 2019 Acum 6 minute, marinizzo a spus: informer, daca este chiar asa de usor cum spuneti si ati facut asta de multe ori , puteti sa faceti un tutorial aici ca sa ramana pentru toti incepatorii cu pasi care trebuiesc urmati, ce aplicatii trebuiesc folisite, si chiar link-uri directe ..., eu cred ca nu sunt singurul care vrea sa faca modificarea si vor aparea din ce in ce mai multi care doresc asta , pentru un inepator "Exista un cod pe care poti sa-l incluzi in ceea ce urmeaza sa programezi si care se cheama WiFiManager" este destul de greu , eu abea am invatat sa compilez un ASM si sa il scriu pe un pic sa mai si implementez un cod pentru mine pare extrem de greu sau daca nu , puteti oferi un link spre un videotutorial care explica pas cu pas ce trebuie facut din momentul cand conectzi releul la portul usb si pana in momenutl cand ii aloci ip-ul ? pentru ca din ce vad ,dumneavoastra imi spuneti de "ide"-ul arduino iar pe net ba aud de tasmota ba aud de openhab. Eu n-am spus ca "este chiar asa de usor", am spus ca nu-i o asa mare problema incat sa trebuiasca "2 facultati" s-o rezolvi... exista treburi MULT mai complicate in domeniul asta. Programarea, mai ales aia "de calitate" nu-i o ocupatie banala... ca n-ar fi platita cum este platita in toata lumea, daca ar fi asa. Ce am vrut sa spun de la inceput este ca acel sonoff inglobeaza deja un procesor suficient de "destept" pt. un "intrerupator" incat nu vad rostul sa mai adaugi unul... sau alta electronica. Cat despre tutoriale, imi pare rau... n-am nici timp nici vocatie pt. asa ceva... pot sa raspund si am raspuns intotdeauna la intrebari PUNCTUALE si CLARE... dar cam atat. Revenind la problema in discutie exista zeci de tutoriale despre cum se programeaza un ESP8266 folosind mediul Arduino, cum se instaleaza o librarie pt. Arduino (WiFiManager se incadreaza aici) s.a.m.d.... le gasesti la o simpla cautare pe Google... daca nu intelegi ceva anume, iti raspund cu placere. Link spre comentariu
marinizzo Postat Octombrie 11, 2019 Partajează Postat Octombrie 11, 2019 Acum 6 minute, informer a spus: Eu n-am spus ca "este chiar asa de usor", am spus ca nu-i o asa mare problema incat sa trebuiasca "2 facultati" s-o rezolvi... exista treburi MULT mai complicate in domeniul asta. Programarea, mai ales aia "de calitate" nu-i o ocupatie banala... ca n-ar fi platita cum este platita in toata lumea, daca ar fi asa. Ce am vrut sa spun de la inceput este ca acel sonoff inglobeaza deja un procesor suficient de "destept" pt. un "intrerupator" incat nu vad rostul sa mai adaugi unul... sau alta electronica. Cat despre tutoriale, imi pare rau... n-am nici timp nici vocatie pt. asa ceva... pot sa raspund si am raspuns intotdeauna la intrebari PUNCTUALE si CLARE... dar cam atat. Revenind la problema in discutie exista zeci de tutoriale despre cum se programeaza un ESP8266 folosind mediul Arduino, cum se instaleaza o librarie pt. Arduino (WiFiManager se incadreaza aici) s.a.m.d.... le gasesti la o simpla cautare pe Google... daca nu intelegi ceva anume, iti raspund cu placere. ok am gasit un tutorial pe youtube care cred ca pot sa il inteleg , acum , ce nelamurire am si poate ma lamuresti , la editarea preferintelor in arduino ide exista o rubrica "additional boards manager URLs in care a complectat cu link-ul asta "https://github.com/esp8266/Arduino" eu intreb , pot face ecat ca cel care a facut tutorialul sau trebuie sa tin cont ca eu nu am ESP8266 , eu am ESP8285? in tutorial explica clar pasi de urmat pentru 8266 Link spre comentariu
informer Postat Octombrie 11, 2019 Partajează Postat Octombrie 11, 2019 (editat) Acum 11 minute, marinizzo a spus: ok am gasit un tutorial pe youtube care cred ca pot sa il inteleg , acum , ce nelamurire am si poate ma lamuresti , la editarea preferintelor in arduino ide exista o rubrica "additional boards manager URLs in care a complectat cu link-ul asta "https://github.com/esp8266/Arduino" eu intreb , pot face ecat ca cel care a facut tutorialul sau trebuie sa tin cont ca eu nu am ESP8266 , eu am ESP8285? in tutorial explica clar pasi de urmat pentru 8266 N-am programat ESP8285 dar din ce-am citit nu exista diferente in afara de faptul ca flash-ul este mai mic (1M fata de 4M la ultimele ESP8266 (12F)). Are si mai putini pini IO din ce vad da` la comanda unui singur releu n-ar trebui sa conteze. Editat Octombrie 11, 2019 de informer Link spre comentariu
gsabac Postat Octombrie 12, 2019 Partajează Postat Octombrie 12, 2019 (editat) Am gasit o data salvatoare, in documentatia Microchip se spune ca toate PIC10FXXX sunt compatibile, deci programul l-am facut cu microC PIC10F320, iar simularea cu Proteus PIC10F200, schema este in poza. Faceti aceasta schema in Proteus, versiunea pe care o aveti si in atasament este fisierul HEX, care trebuie pus in aceeasi locatie cu fisierul Proteus si incarcat in PIC10F200. @gsabac SonoffPIC10F320.hex Editat Octombrie 12, 2019 de gsabac Link spre comentariu
Mircea Postat Octombrie 12, 2019 Partajează Postat Octombrie 12, 2019 Hmmm, e interesant ce spuneti. Si mai interesant de vazut daca merge si in realitate. O sa caut un 10F200 DIP ca sa testez. Mikroelectronika zice: Unfortunately mikroBasic doesn't support PIC10F2xx, because it works with 10-bit wide instructions. Our compiler support MCUs with 14 or more wide instructions. Link spre comentariu
Mircea Postat Octombrie 12, 2019 Partajează Postat Octombrie 12, 2019 @gsabac, va rog sa postati captura de ecran din Edit Project, sau macar cuvantul de configurare in hexa. Multumesc! Link spre comentariu
marinizzo Postat Octombrie 12, 2019 Partajează Postat Octombrie 12, 2019 (editat) Acum 8 ore, gsabac a spus: @gsabac, am desenat exact aceasi schema in proteus am incarcat fisierul hex in pi 10f200 si se pare ca nu functioneaza primesc eroarea din fisa tehnica a uC-ului eu am vazut ca pinul 6 este intrare ,ma gandesc sa nu fie o greseala la definirea pinilor in hex si daia sa nu functioneze , stiu ca se poate alege oricare dintre pini care sunt si intrare si iesire sa fie setati intrare sau iesire dar nu inteleg de ce pe pinul 6 este nevoie de acel rezistor in cazul asta Editat Octombrie 12, 2019 de marinizzo Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum