Recommendations - Model Train Controller


Closed Thread
Results 1 to 40 of 102

Hybrid View

  1. #1
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Wink

    Hi, Malc

    Your scoping confirms what I thought and read ...

    The pot function charges the capacitor, and then drags little amounts of current ( in coulombs ...), verifies if the pin low thresold is reached, takes another quantity of current, verifies, and so on ...

    That's why you get such garbage !!!

    Now, the result is a count of the little quantities ... and that explains why you must use the indicated values and not others, even the RC value remains constant.

    Alain

    PS: and what about a scale value of ... 64 ???
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  2. #2
    malc-c's Avatar
    malc-c Guest


    Did you find this post helpful? Yes | No

    Default

    Alain,

    The traces were from the 12f675 that used A/D to read the voltage from a 10K pot (as detailed in post #22).

    Code:
    ADCIN 0, D                                   
        Pwm GPIO.2,D,1
    goto main
    I was expecting a traditional square wave type signal, with varying width of pulse, not the noisy signal the PIC is outputing.... The manual shows additional components for analogue output (resistor / capacitor), maybe I should try using that to get a decent signal out ?

  3. #3
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Talking The Bass beat Filter II ???

    Huh !!!

    The manual clearly tells Pwm outputs garbage ... and needs a RC or more sophisticated filter.

    Now just keep in mind PWM is only good to get some "analogic" output from the PIC.

    Another STAMP " Not so good a function " survivor.

    Now, if you want to keep the PWM function ... just compare a sawtooth to this "analogic" voltage ( once filtered ) and you'll get a neat "real PWM" at the output of the comparators.

    a quad LM 339 sould do that job very honestly ...

    But we remember DARREL's slow PWM is the shiny solution to what you want to do.

    Ah, last point ... and not least ! you'll discover the motors have a low PWM ratio thresold not to make some noise and unwanted heating while not turning. one more thing to add !!!

    Alain
    Last edited by Acetronics2; - 12th February 2007 at 10:13.
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  4. #4
    malc-c's Avatar
    malc-c Guest


    Did you find this post helpful? Yes | No

    Default

    Yeah, I re-read the manual and noted that it stated the PWM signal is not tidy. Tried the 10K / 1uF as suggested in the manual


    But that simply smoothed the output to a constant voltage level, regardless of what setting the pot was turned to.

    I spent a lot of time browsing the web last night and most brushed motor control using PICs involved using H-Bridges, which may be impractical for this purpose...

    I'll have a more indepth look of that PBgroup website and see if there is anything I can use - Thanks

  5. #5
    malc-c's Avatar
    malc-c Guest


    Did you find this post helpful? Yes | No

    Default

    Alain,

    I'm getting way out of my depth here. I downloaded the three files from Darrel's web site (http://www.darreltaylor.com/DT_INTS-14/SPWM.html) and copied the sample code for the LEDs. Darrel stated on the PBgroup that the code Works on just about any chip. 12F, 16F, 18F, but if I try compiling with MCS I get errors, regardless of the target pic selected.

    ERROR: variable wsave3 position request 416 beyond RAM_END 335

    I've never used other include files etc before, but if I understand his site correctly it should be a simple matter of downloading and saving the three files to the PBP folder, copy and pasting the sample code into MCS and then compiling ?

    Any ideas ?

  6. #6
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Wink The long and winding road ...

    YESS

    Big Idea !!! just comment the faulty line ... as this location only exist in elephant memory Pics !!!

    also ... as stated in one of Darrel's further replies !!!

    Alain

    find it ... in the beginning of " DT int 14 .bas "

    ' --- IF any of these three lines cause an error ?? ----------------------------
    ' Comment them out to fix the problem ----
    ' -- It depends on which Chip you are using, as to which variables are needed --
    wsave1 var byte $A0 SYSTEM ' location for W if in bank1
    wsave2 var byte $120 SYSTEM ' location for W if in bank2
    wsave3 var byte $1A0 SYSTEM ' location for W if in bank3
    ' ------------------------------------------------------------------------------

    YOU DO NOT HAVE BANK3 in your Pic ... isn't it ???
    Last edited by Acetronics2; - 12th February 2007 at 12:51.
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  7. #7
    malc-c's Avatar
    malc-c Guest


    Did you find this post helpful? Yes | No

    Default

    Alain, thanks for the life saving ring... its keeping me afloat

    OK I have something that works... but its not as smooth as the PWM command in PBP.

    This is the code, based on the sample taken from Darrel's website. Using a 12F675
    Code:
    @ __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _MCLRE_OFF & _BODEN_ON
    
    DEFINE OSC 4
    CLEAR
    
    DEFINE ADC_BITS 8	' Set number of bits in result
    DEFINE ADC_CLOCK 3	' Set clock source (rc = 3)
    DEFINE ADC_SAMPLEUS 50	' Set sampling time in microseconds
    
    INCLUDE "DT_INTS-14.bas"            ; Base Interrupt System
    INCLUDE "SPWM_INT.bas"              ; Software PWM module
    
    DEFINE SPWM_FREQ  40                ; SPWM Frequency
    DEFINE SPWM_RES   256               ; SPWM Resolution
    
    D var byte
    
    DutyVars   VAR BYTE[3]              ; DutyCycle Variables
      DutyVar1 VAR DutyVars[0]          ; group them in an array for easy access
      DutyVar2 VAR DutyVars[1]          ; with FOR loops etc.
      DutyVar3 VAR DutyVars[2]
    
    ASM
    SPWM_LIST  macro                    ; Define Pin's to use for SPWM
         SPWM_PIN  GPIO, 0, _DutyVar1  ; and the associated DutyCycle variables
         SPWM_PIN  GPIO, 1, _DutyVar2  ; Notice the underscore before variables
         SPWM_PIN  GPIO, 2, _DutyVar3
      endm
      SPWM_INIT  SPWM_LIST              ; Initialize the Pins
    ENDASM
    
    ASM
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
            INT_Handler   TMR1_INT,  SPWMhandler,  ASM,  yes
        endm
        INT_CREATE                      ; Creates the interrupt processor
    ENDASM
    
    @ INT_ENABLE  TMR1_INT              ; enable Timer 1 interrupts
    
    ;_____________________________________________________________________________
    
    Main:                               
     ADCIN 0, D 
        DutyVar3 = D   
    GOTO Main
    The output is quite pulsed, and moving the pot produces rather stepped increase in brightness rather than a smooth increase. Also the range of the brightness is limited to 2/3 the travel of the POT (unlike when I used the PWM command when it was right across from one end to the other)

    The waveform is different to that previously found when using the PWM command, as can be seen by the two images attached (one low, one high)

    I assume the PWM settings in Darrels code can be changed by altering the values of
    Code:
    DEFINE SPWM_FREQ  40                ; SPWM Frequency
    DEFINE SPWM_RES   256               ; SPWM Resolution
    I'll play with the values and see if anything improves - Thanks for your help on this

    EDIT:
    Changing the OSC to 20 and freq to 100 gives less flicker, but the transitions are still not smooth... I also think that I need to come up with some driver circuit for the FET or feed the PIC outout into a Darlington pair arrangement with a power tranny reather than a FET
    Attached Images Attached Images   
    Last edited by malc-c; - 12th February 2007 at 14:10.

Similar Threads

  1. Microstepper controller
    By aratti in forum Schematics
    Replies: 14
    Last Post: - 3rd January 2015, 16:52
  2. problem with the GSM controller
    By Dariolo in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 30th May 2009, 20:33
  3. Replies: 2
    Last Post: - 14th July 2008, 22:11
  4. Model Train controller - revisited
    By malc-c in forum mel PIC BASIC Pro
    Replies: 32
    Last Post: - 8th May 2007, 09:40
  5. Dedicated LCD Controller question
    By chuckles in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 27th February 2006, 14:44

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts