1. Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.
    Dismiss Notice

Fish Feeder Idea...Help Regards

Discussion in 'Microcontrollers' started by manoj soorya, Feb 20, 2018.

Tags:
  1. manoj soorya

    manoj soorya Member

    Joined:
    Aug 23, 2014
    Messages:
    292
    Likes:
    4
    Location:
    India
    Hello All,

    I have to make a Fish feeder Unit with 12F675. I have just an Idea about switching with 12F675. I make a schematic for 12F675 with switch.

    Can you please someone guide me to make this?

    Regards Manoj Soorya

    NB: I think this forum is used to post about PIC Chips. If not, Please guide me. Sorry to post here.
     
  2. dknguyen

    dknguyen Well-Known Member

    Joined:
    May 6, 2006
    Messages:
    7,549
    Likes:
    162
    Show us your schematic.
     
  3. manoj soorya

    manoj soorya Member

    Joined:
    Aug 23, 2014
    Messages:
    292
    Likes:
    4
    Location:
    India
    This is my schematic.

    manoj1.jpg

    But I dont have the code for to test the Unit...
     
    Last edited by a moderator: Feb 20, 2018
  4. dave miyares

    Dave New Member

    Joined:
    Jan 12, 1997
    Messages:
    2
    Likes:
    -10


     
  5. manoj soorya

    manoj soorya Member

    Joined:
    Aug 23, 2014
    Messages:
    292
    Likes:
    4
    Location:
    India
    And this is the Idea...

     
  6. manoj soorya

    manoj soorya Member

    Joined:
    Aug 23, 2014
    Messages:
    292
    Likes:
    4
    Location:
    India
    If the switch is Press and hold (My timer output is enable for 1 Minute minimum) either Press, all LED will be ON.
    After 1 Second, LED 1 Turn Off,
    After 2 Second, LED 2 Turn Off
    After 4 Second, LED 3 Turn Off
    After 6 Second, LED 4 Turn Off
    After 8 Second, LED 5 Turn Off.

    (5 LED is used for Manual Timer selection for the Motor will Enable..)

    any hope ?

    Thank you
     
  7. dknguyen

    dknguyen Well-Known Member

    Joined:
    May 6, 2006
    Messages:
    7,549
    Likes:
    162
    Well, no one is going to code it for you but we would be glad to help if you provide an attempt. However, this project is ideal for someone. If you think it might be too much for you to handle, you could try using a PICAXE instead of a PIC. A PICAXE is just a PIC pre-loaded with an interpreter to make it easier to code for (but will run slower than coding it directly). The 8-pin PICAXE should be almost the exact, if not the exact same chip as the 12F675.

    Don't forget that you have to get the code from your computer to the PIC. This normally takes a little bit of extra wires going to the PIC and a programmer box sitting between the computer and board, unless you have a way to program the chip directly before putting it into the circuit.

    In your circuit though, don't you have to drive a motor of some kind? I don't see any motors. The PIC cannot drive a motor directly from it's pins (can't provide enough current). So at the very least, you need to drive a transistor with the PIC, and the transistor drives the motor.

    Also, you need current limiting resistors in series for your LEDs. If you have too many LEDs on at the same time, the PIC will also not be able to drive them due to current limits. In that case, you would have to use a transistor with each LED (very similar to the motor) and drive the transistor with the PIC.
     
    Last edited: Feb 20, 2018
  8. dave miyares

    Dave New Member

    Joined:
    Jan 12, 1997
    Messages:
    2
    Likes:
    -10


     
  9. Ian Rogers

    Ian Rogers User Extraordinaire Forum Supporter Most Helpful Member

    Joined:
    Mar 28, 2011
    Messages:
    9,805
    Likes:
    958
    Location:
    Rochdale UK
    Manoj is using C compiler, so I moved this thread out of the Oshonsoft forum..
     
  10. manoj soorya

    manoj soorya Member

    Joined:
    Aug 23, 2014
    Messages:
    292
    Likes:
    4
    Location:
    India
    OK. I have already built a 24Hour Timer. Its output is minimum 1 Minute Enabled.

    I have also a Stepper Motor Driver with Forward/Reverse Switch. Its working Perfect.

    Schematic is Here

    manoj02.gif

    and this is the schematic of Timer

    manoj03_multi_timer_circuit.gif

    and the 12F675 is to connect between timer and the Motor controller Switch. (either Lefr/Right)
     
    Last edited by a moderator: Feb 20, 2018
  11. manoj soorya

    manoj soorya Member

    Joined:
    Aug 23, 2014
    Messages:
    292
    Likes:
    4
    Location:
    India

    If the Code for 12F675 is Okey, The circuit will work 100%. I sure.
     
    Last edited: Feb 20, 2018
  12. manoj soorya

    manoj soorya Member

    Joined:
    Aug 23, 2014
    Messages:
    292
    Likes:
    4
    Location:
    India
    I can use NE555 timer Insted of 12F675, But the manual timing selection is not possible. Thats I am trying with 12F675. The whole circuit is not only for a fish feeding. Many more applications like timer with presssission timing.
     
  13. dknguyen

    dknguyen Well-Known Member

    Joined:
    May 6, 2006
    Messages:
    7,549
    Likes:
    162
    Why don't you just start by figuring out how to read an input line and writing a high or low to an output line? That's almost 70% of what you need. Just get that working with no interrupts using for loop delays until it works.

    Then start to worry about using the timer peripheral to get precision timing.
     
  14. manoj soorya

    manoj soorya Member

    Joined:
    Aug 23, 2014
    Messages:
    292
    Likes:
    4
    Location:
    India
    will I was waiting, If someone can gave me the code......Not sure. Sorry for my poor english.
     
  15. sagor1

    sagor1 Member

    Joined:
    Dec 11, 2014
    Messages:
    61
    Likes:
    4
    GP3/MCLR is only input, it cannot drive a LED directly. Switch GP0 and GP3 around...
    Also, all LEDs should have a current limiting resistor in series, else you will exceed the output pin ratings. Typical values are 330/470 ohm up to 1000 ohm, depending on the LED type.
     
    • Like Like x 1
  16. manoj soorya

    manoj soorya Member

    Joined:
    Aug 23, 2014
    Messages:
    292
    Likes:
    4
    Location:
    India
    Thank you so much sagor1 for your information. I will change the Connection.
     
  17. manoj soorya

    manoj soorya Member

    Joined:
    Aug 23, 2014
    Messages:
    292
    Likes:
    4
    Location:
    India
    New schematic is Upload.

    change_Input1.jpg

    Is this okey now sagor1?

    I am trying to write the programme.
     
    Last edited by a moderator: Feb 21, 2018
  18. sagor1

    sagor1 Member

    Joined:
    Dec 11, 2014
    Messages:
    61
    Likes:
    4
    Schematic looks better now. Always remember that the I/O pins are limited to 25mA each, and all I/O together are limited to 125mA total for the entire chip. Your schematic meets those limits ok, since each LED will be drawing about 10mA each...

    Also remember that the internal oscillator, if not calibrated (PicKit2 can calibrate clock in a 12F675), can be a fair bit off frequency, 10% or more. Keep that in mind when writing timing loops and the LEDs turn on/off at different times than expected.

    Also, if you want accurate timing, you have to read the calibration value via ASM code, and write it into OSCCAL register. See the datasheet section 9.2.5 for details
     
    Last edited: Feb 21, 2018
    • Like Like x 1
  19. Dan Soze

    Dan Soze Member

    Joined:
    Dec 21, 2017
    Messages:
    38
    Likes:
    18
    manoj soorya,

    I do not completely understand the description of what you want the code to do.

    This is my best guess:
    Code (MPASM list file):

    MPASM  5.51                          MAIN.ASM   2-23-2018  16:59:10         PAGE  1


    LOC  OBJECT CODE     LINE SOURCE TEXT
      VALUE

                          00001     list n=0, c=150, r=dec
                          00002 ; File: main.asm
                          00003 ; Target: PIC12F675
                          00004 ; Created: 2018-02-23
                          00005 ; Author: Dan1138
                          00006 ;*********************************************************************
                          00007 ;                          ___ ___
                          00008 ;                   VDD ->|1  U  8|<- VSS
                          00009 ;                  LED1 <>|2     7|<> LED3
                          00010 ;                  LED2 <>|3     6|<> LED4
                          00011 ;                  SW1n ->|4     5|<> LED5
                          00012 ;                          ¯¯¯¯¯¯¯
                          00013 ;                         PIC12F675
                          00014 ;
                          00015 ;*********************************************************************
                          00016 ;
                          00017 ;  If the switch is Press and hold (My timer output is enable for 1 Minute minimum) either Press, all LED will be ON.
                          00018 ;  After 1 Second, LED 1 Turn Off,
                          00019 ;  After 2 Second, LED 2 Turn Off
                          00020 ;  After 4 Second, LED 3 Turn Off
                          00021 ;  After 6 Second, LED 4 Turn Off
                          00022 ;  After 8 Second, LED 5 Turn Off.
                          00023 ;
                          00024 ;  (5 LED is used for Manual Timer selection for the Motor will Enable..)
                          00025 ;
                          00026 ;*********************************************************************
                          00027 ; See: https://www.electro-tech-online.com/threads/fish-feeder-idea-help-regards.153045/
                          00028 ;*********************************************************************
                          00029     #include <p12f675.inc>
                          00001         LIST
                          00002
                          00003 ;==========================================================================
                          00004 ;  MPASM PIC12F675 processor include
                          00005 ;
                          00006 ;  (c) Copyright 1999-2013 Microchip Technology, All rights reserved
                          00007 ;==========================================================================
                          00008
                          00366         LIST
                          00030     errorlevel -302         ; suppress banksel warning messages
                          00031  
    2007   3FC4           00032  __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_ON & _CP_OFF & _CPD_OFF
                          00033
                          00034 #define TIMER0_INTERRUPTS_PER_SECOND D'4000'
                          00035 #define LED1 GPIO,5
                          00036 #define LED2 GPIO,4
                          00037 #define LED3 GPIO,0
                          00038 #define LED4 GPIO,2
                          00039 #define LED5 GPIO,1
                          00040 #define SW1n GPIO,3
                          00041
                          00042 ISR_DATA    udata_shr  0x20
    0020                  00043 WREG_save       res 1
    0021                  00044 STATUS_save     res 1
                          00045
                          00046 TIMER_DATA  udata_shr
    0000                  00047 IntsInOneSecond res 2
    0002                  00048 Seconds         res 1
                          00049
                          00050 RESET_CODE  CODE 0x000
    0000   2???           00051     goto    Start
                          00052
                          00053
                          00054 ISR_CODE    CODE 0x004
    0004   00??           00055     movwf   WREG_save
    0005   0803           00056     movf    STATUS,W
    0006   00??           00057     movwf   STATUS_save
                          00058
    0007   1A8B           00059     btfsc   INTCON,TMR0IE
    0008   1D0B           00060     btfss   INTCON,TMR0IF
    0009   2???           00061     goto    ISR_Exit
    000A   110B           00062     bcf     INTCON,TMR0IF
    000B   3009           00063     movlw   256-250+3
    000C   0781           00064     addwf   TMR0,F
    000D   30FF           00065     movlw   -1
    000E   07??           00066     addwf   IntsInOneSecond,F
    000F   1C03           00067     skpc
    0010   07??           00068     addwf   IntsInOneSecond+1,F
    0011   1803           00069     skpnc
    0012   2???           00070     goto    ISR_Exit
    0013   300F           00071     movlw   HIGH(TIMER0_INTERRUPTS_PER_SECOND-1)
    0014   00??           00072     movwf   IntsInOneSecond+1
    0015   309F           00073     movlw   LOW(TIMER0_INTERRUPTS_PER_SECOND-1)
    0016   00??           00074     movwf   IntsInOneSecond
    0017   0A??           00075     incf    Seconds,F
                          00076
    0018                  00077 ISR_Exit:
    0018   08??           00078     movf    STATUS_save,W
    0019   0083           00079     movwf   STATUS
    001A   0E??           00080     swapf   WREG_save,F
    001B   0E??           00081     swapf   WREG_save,W
    001C   0009           00082     retfie
                          00083  
                          00084 START_CODE  CODE
    0000                  00085 Start:
    0000   1A83           00086     btfsc   STATUS,RP0
    0001   2???           00087     goto    OscillatorCalibrationFailed
    0002   1683           00088     banksel OSCCAL
    0003   2???           00089     call    GetOSCCAL
    0004   0090           00090     movwf   OSCCAL
    0005                  00091 OscillatorCalibrationFailed:
    0005   1683           00092     banksel ANSEL
    0006   019F           00093     clrf    ANSEL
    0007   0185           00094     clrf    TRISIO
    0008   30DF           00095     movlw   B'11011111'
    0009   0081           00096     movwf   OPTION_REG
    000A   1283           00097     banksel INTCON
    000B   018B           00098     clrf    INTCON
    000C   0185           00099     clrf    GPIO
    000D   3007           00100     movlw   0x07
    000E   0099           00101     movwf   CMCON
    000F   300F           00102     movlw   HIGH(TIMER0_INTERRUPTS_PER_SECOND-1)
    0010   00??           00103     movwf   IntsInOneSecond+1
    0011   309F           00104     movlw   LOW(TIMER0_INTERRUPTS_PER_SECOND-1)
    0012   00??           00105     movwf   IntsInOneSecond
    0013   01??           00106     clrf    Seconds
    0014   0181           00107     clrf    TMR0
    0015   3009           00108     movlw   256-250+3
    0016   0781           00109     addwf   TMR0,F
    0017   168B           00110     bsf     INTCON,TMR0IE
    0018   178B           00111     bsf     INTCON,GIE
                          00112 ;
                          00113 ;
                          00114 ;
    0019                  00115 AppStart:
    0019   0185           00116     clrf    GPIO
    001A                  00117 AppLoop:
    001A   1985           00118     btfsc   SW1n
    001B   2???           00119     goto    AppLoop
    001C   128B           00120     bcf     INTCON,TMR0IE
    001D   300F           00121     movlw   HIGH(TIMER0_INTERRUPTS_PER_SECOND-1)
    001E   00??           00122     movwf   IntsInOneSecond+1
    001F   309F           00123     movlw   LOW(TIMER0_INTERRUPTS_PER_SECOND-1)
    0020   00??           00124     movwf   IntsInOneSecond
    0021   01??           00125     clrf    Seconds
    0022   3037           00126     movlw   B'00110111' ; LED1-5 on
    0023   0085           00127     movwf   GPIO
    0024   168B           00128     bsf     INTCON,TMR0IE
    0025                  00129 AppTimeout:
    0025   08??           00130     movf    Seconds,W
    0026   3A01           00131     xorlw   D'1'
    0027   1903           00132     skpnz
    0028   2???           00133     goto    LED1_off
    0029   3A03           00134     xorlw   D'1'^D'2'
    002A   1903           00135     skpnz
    002B   2???           00136     goto    LED2_off
    002C   3A06           00137     xorlw   D'2'^D'4'
    002D   1903           00138     skpnz
    002E   2???           00139     goto    LED3_off
    002F   3A02           00140     xorlw   D'4'^D'6'
    0030   1903           00141     skpnz
    0031   2???           00142     goto    LED4_off
    0032   3A0E           00143     xorlw   D'6'^D'8'
    0033   1903           00144     skpnz
    0034   2???           00145     goto    LED5_off
    0035   3A08           00146     xorlw   D'8'
    0036   3C08           00147     sublw   D'8'
    0037   1C03           00148     skpc
    0038   2???           00149     goto    WaitForButtonUp
    0039                  00150 CheckSwitch:
    0039   1985           00151     btfsc   SW1n
    003A   2???           00152     goto    AppStart
    003B   2???           00153     goto    AppTimeout
                          00154 ;
                          00155 ;
                          00156 ;
    003C                  00157 WaitForButtonUp:
    003C   1985           00158     btfsc   SW1n
    003D   2???           00159     goto    AppStart
    003E   2???           00160     goto    WaitForButtonUp
                          00161 ;
                          00162 ;
                          00163 ;
    003F                  00164 LED1_off:
    003F   3017           00165     movlw   B'00010111' ; LED1   off
    0040   0085           00166     movwf   GPIO
    0041   2???           00167     goto    CheckSwitch
    0042                  00168 LED2_off:
    0042   3007           00169     movlw   B'00000111' ; LED1-2 off
    0043   0085           00170     movwf   GPIO
    0044   2???           00171     goto    CheckSwitch
    0045                  00172 LED3_off:
    0045   3006           00173     movlw   B'00000110' ; LED1-3 off
    0046   0085           00174     movwf   GPIO
    0047   2???           00175     goto    CheckSwitch
    0048                  00176 LED4_off:
    0048   3002           00177     movlw   B'00000010' ; LED1-4 off
    0049   0085           00178     movwf   GPIO
    004A   2???           00179     goto    CheckSwitch
    004B                  00180 LED5_off:
    004B   3000           00181     movlw   B'00000000' ; LED1-5 off
    004C   0085           00182     movwf   GPIO
    004D   2???           00183     goto    CheckSwitch
                          00184
                          00185 OSCCAL_CODE CODE 0x3ff
    03FF                  00186 GetOSCCAL:
    3FC4                  00187     end
     
     
  20. manoj soorya

    manoj soorya Member

    Joined:
    Aug 23, 2014
    Messages:
    292
    Likes:
    4
    Location:
    India
    Hello Dan Soze

    Firstly Thank you so much the code, But I do not check it, Sorry. Just a few seconds, I saw this code. Thank you so much again.

    1. Simple control stepper motor driver with speed control.
    It is used to rotate a Stepper motor run in CW/CCW direction, only when the switch is pressed. The speed can Adjust.
    2. In the switching section with 12F675 is used for automatic switching the stepper motor control Unit.
    3. A simple timer used to set the Time to feed the fish. The output is connected to the 12F675 Switch. When the timer O/P is Enable, The 12F675 is also Enable. At the same time, The 5 Outrput of the 12F675 is also Enable. The output is connected to the Stepper Motor Driver Unit input (use only 1 input either CW/CCW) via a single pole five way Switch (SPFW Switch) or someting like that.

    The reason for Selecting the Output Enable from 12F675, My timer minimum output Enable time is 1 Munite. Thats why the manual selector switch is used.

    Please see my Previous Posts, I mensioned that the timer, Stepper Motor Driver and a video of another DIY automatic Fish feeder.

    I like to combine the all three Unit in One...

    I think you understand my Idea. Sorry for my poor English.

    Will check your code tonight. Is more usefull, if you send the Hex file too, only If you dont mind.

    Thank you so much
     
  21. manoj soorya

    manoj soorya Member

    Joined:
    Aug 23, 2014
    Messages:
    292
    Likes:
    4
    Location:
    India
    I got error while compile the code.....:(
     
  22. manoj soorya

    manoj soorya Member

    Joined:
    Aug 23, 2014
    Messages:
    292
    Likes:
    4
    Location:
    India
    I am using MPlab 8.33. Its support MPASMWIN 5.31.... This source not run on MPASMWIN 5.31. Got error.
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice