Sari la conținut
ELFORUM - Forumul electronistilor

Banda led programabila


Vizitator Ovidiu Busuioc

Postări Recomandate

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.

 monostabile250ms.thumb.png.0102c30858e538c49eac93894b677416.png

 

@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 .pic10f200.thumb.jpg.6af0009adaf90078c7cb9d51a94d398b.jpg

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.12f675.thumb.jpg.782148266af164e2c0258c192e88d0af.jpg

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

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.

 

   image.thumb.png.e63cc1837fcf6f641a7bc3cbf604fa92.png

 

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 de gsabac
Link spre comentariu
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.

 

   image.thumb.png.e63cc1837fcf6f641a7bc3cbf604fa92.png

 

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 10f3xx:nervam 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
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
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

 

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.

 

monostabil3V.png

Editat de Ticu
Link spre comentariu
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.

monostabil.png

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
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
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
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
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 de informer
Link spre comentariu

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.

    image.thumb.png.8350f64c35dbbda96c244b02129efde0.png

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 de gsabac
Link spre comentariu

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
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 

 

Untitled.thumb.png.0b1f2135d74b49eafe586f3dccdc74f6.png

primesc eroarea 

Untitled.thumb.jpg.84dfc3f3323e0a8dae1a8c0f4e91fcc8.jpg

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 204548040_PIC10F200pinout(1).thumb.jpg.c8d82350a2acfcfe86a80efa39deca20.jpg

Editat de marinizzo
Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări