Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Reputation Activity

  1. Like
    Automate reacted to maelli01 in 3phase variable speed motor drive   
    Hi there
    Here is my 3phase variable speed motor drive booster pack

    This has been in my mind for some years, but I always thought that a 3phase variable speed inverter drive is
    beyond my humble hobbyist scope. Too complicated for my old 8-bit mind ;-)

    Such a inverter contains:
    6 high voltage FETs or IGBTs, 6 gatedrives, at least one DSP, a protection concept,
    all the software to create the 3-phase PWM, dead time control.....

    Still that was for quite some time on my long-term "to do" list, with no chance to actually materialize it,
    not enough time, too many other things to do.

    When playing around with the PWM module of the TM4C123 I found out that creating a 3phase PWM
    signal with this module is actually pretty easy.
    Combined that with an integrated Power Module such as the FSB50550 (Fairchild).

    So here it is: a booster pack for the Tiva Launchpad which drives big-ass 3phase motors.

    The booster pack contains the following:
    - the FSB50550 power module (6 FETs 500V 1.4Ohm, Gatedrivers, Bootstrap diodes, Temp sensor)
    - snubber capacitor
    Power supply: everything is powered from one DC source, 20V or (much) more.
    - 15V switchmode power supply from the high voltage side, built around a LNK304, for the FSB50550
    - 3.3V switchmode power supply from the 15V to power the Launchpad, built around a LT1376
    - Passive voltage dividier to measure the input voltage
    - Sense resistor and LM339 comparator for overcurrent detection
    - Nokia 5110 display
    Potentiometer for motor speed and direction

    The software is based on Energia using Tiva Ware function calls for all the PWM stuff.
    It is still work in progress, very basic and at the moment consists of:

    - calculate the sinwave lookup table at startup
    - PWM initialisation (PWM set to 15625 Hz, deadtime 1us, sync on)
    - a timer interrupt run every 10uSecs, do update the 3 PWD duty cycles
    - ADC measurement of temperature, voltage, current (moving average)
    - fault interrupt

    The main program is very short, the display is updated twice a second and the modulation factor is calculated
    out of the potentiometer speed setting and the applied DC voltage.
    Sudden changes in motor frequency are limited in the software, to prevent the motor to feed back energy and cause

    The motor on the picture is a 1/2hp, 900rpm, 6-pole motor, 12 kg of Italian steel and copper, probably 50 years old.
    For playing around, I apply about 50% of rated volt/hz, so current and maximum torque is reduced.
    Currently I use my dual 35V 4A lab supply, series connected, as a power source.
    here is the code:
    //simple 3phase frequency converter //27.9.2014 by maelli #define dots 192 //dots per halfhave, must be divisible with 3 #define period 5120 //80Mhz/5120 = 15625 switching frequency #define dt 80 //deadtime 80Mhz / 80 = 1uS #define PART_TM4C123GH6PM #include <stdint.h> #include <stdbool.h> #include "inc/hw_ints.h" #include "inc/hw_sysctl.h" #include "inc/hw_types.h" #include "driverlib/interrupt.h" #include "driverlib/sysctl.h" #include "driverlib/timer.h" #include "driverlib/pwm.h" #include "LCD_5110.h" #include "inc/tm4c123gh6pm.h" LCD_5110 myScreen (33,37,36,35,34,38,17); char celsius[3]={0x7f,'C',0x00}; uint16_t a,dire=0,modu,tensec; uint32_t timecount,sintable[dots]; volatile int32_t irqcount,timeset; volatile uint32_t temperature, voltage, current, poti; void setup(){ myScreen.begin(); myScreen.setBacklight(0); myScreen.text(0, 0, "3ph Converter"); for(int i=0;i<dots;i++) sintable[i]=sinf((i*3.14159)/dots)*(period/2-dt); unsigned long ulPeriod; unsigned int Hz = 10000; // interupt frequency in Hz ulPeriod = (SysCtlClockGet() / Hz); initTimer(); charge_gdu(); ROM_TimerLoadSet(TIMER0_BASE, TIMER_A,ulPeriod -1); initPWM(); } void loop(){ if (irqcount>499) { //20x per sec irqcount-=500; int32_t fsoll=732*(poti-16384); int32_t diff=fsoll-timeset; if (diff>0){ if (diff>150000) timeset+=150000; else timeset=fsoll; } else { if (diff<-150000) timeset-=150000; else timeset=fsoll; } modu=abs(timeset)/voltage/16; if (modu<(32000/voltage)) modu=32000/voltage; if (modu>256) modu=256; tensec++; if (tensec==10) { //2x per sec we display something tensec=0; myScreen.text(0, 1, mkstrg((temperature-325)/24,2)); myScreen.text(2, 1, celsius); myScreen.text(5, 1, mkstrg((voltage)/23,3)); myScreen.text(8, 1, "Volt"); myScreen.text(0, 2, mkstrg(abs(timeset)/322122,2)); myScreen.text(2, 2, "."); myScreen.text(3, 2, mkstrg(abs((timeset/32212)%10),1)); myScreen.text(4, 2, "Hz"); myScreen.text(7, 2, mkstrg(current,4)); myScreen.text(11, 2, "mA"); if (timeset<0) myScreen.text(0, 3, "links "); else myScreen.text(0, 3, "rechts"); } } } String mkstrg(int d,uint8_t l){ char display[l+1]; int q=1; display[l]=0; for (uint8_t a=l;a;a--){ display[a-1]=0x30+(d%(q*10))/q; q*=10; } return display; } void initTimer(){ ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); ROM_TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC); // 32 bits Timer TimerIntRegister(TIMER0_BASE, TIMER_A, Timer0Isr); // Registering isr ROM_TimerEnable(TIMER0_BASE, TIMER_A); ROM_IntEnable(INT_TIMER0A); ROM_TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); } void charge_gdu(){ ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0 ); ROM_GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_0,GPIO_STRENGTH_4MA,GPIO_PIN_TYPE_STD); GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_7); //alle 3 oberen ausschalten HWREG(GPIO_PORTA_BASE + (GPIO_PIN_7 << 2)) = 0; GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_1); HWREG(GPIO_PORTD_BASE + (GPIO_PIN_1 << 2)) = 0; GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_3); HWREG(GPIO_PORTF_BASE + (GPIO_PIN_3 << 2)) = 0; GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_0); //auch die 2 letzten aus HWREG(GPIO_PORTD_BASE + (GPIO_PIN_0 << 2)) = 0; GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2); HWREG(GPIO_PORTF_BASE + (GPIO_PIN_2 << 2)) = 0; GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_6); //den ersten unteren ein HWREG(GPIO_PORTA_BASE + (GPIO_PIN_6 << 2)) = GPIO_PIN_6; delay(1); HWREG(GPIO_PORTD_BASE + (GPIO_PIN_0 << 2)) = GPIO_PIN_0; delay(1); HWREG(GPIO_PORTF_BASE + (GPIO_PIN_2 << 2)) = GPIO_PIN_2; delay(1); } void initPWM(){ ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM1); //The Tiva Launchpad has two PWM modules (0 and 1). We are using 1 ROM_GPIOPinConfigure(GPIO_PD0_M1PWM0); ROM_GPIOPinConfigure(GPIO_PD1_M1PWM1); ROM_GPIOPinConfigure(GPIO_PA6_M1PWM2); ROM_GPIOPinConfigure(GPIO_PA7_M1PWM3); ROM_GPIOPinConfigure(GPIO_PF2_M1PWM6); ROM_GPIOPinConfigure(GPIO_PF3_M1PWM7); ROM_GPIOPinConfigure(GPIO_PF4_M1FAULT0); ROM_GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 ); ROM_GPIOPinTypePWM(GPIO_PORTA_BASE, GPIO_PIN_6 | GPIO_PIN_7 ); ROM_GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4); PWM1_0_FLTSEN_R =3; //PWM fault inverted see page 1169 GPIO_PORTF_PUR_R=0x10; //weak pullup for Pin 4 ROM_PWMGenConfigure(PWM1_BASE, PWM_GEN_0, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_SYNC | PWM_GEN_MODE_FAULT_LEGACY); ROM_PWMGenConfigure(PWM1_BASE, PWM_GEN_1, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_SYNC | PWM_GEN_MODE_FAULT_LEGACY); ROM_PWMGenConfigure(PWM1_BASE, PWM_GEN_3, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_SYNC | PWM_GEN_MODE_FAULT_LEGACY); ROM_PWMGenPeriodSet(PWM1_BASE, PWM_GEN_0, period); ROM_PWMGenPeriodSet(PWM1_BASE, PWM_GEN_1, period); ROM_PWMGenPeriodSet(PWM1_BASE, PWM_GEN_3, period); ROM_PWMDeadBandEnable(PWM1_BASE, PWM_GEN_0, dt,dt); ROM_PWMDeadBandEnable(PWM1_BASE, PWM_GEN_1, dt,dt); ROM_PWMDeadBandEnable(PWM1_BASE, PWM_GEN_3, dt,dt); ROM_PWMSyncTimeBase(PWM1_BASE,PWM_GEN_0_BIT |PWM_GEN_1_BIT|PWM_GEN_3_BIT); ROM_PWMGenEnable(PWM1_BASE, PWM_GEN_0); ROM_PWMGenEnable(PWM1_BASE, PWM_GEN_1); ROM_PWMGenEnable(PWM1_BASE, PWM_GEN_3); delay(1); PWMFaultIntRegister(PWM1_BASE, oh_shit); ROM_PWMIntEnable(PWM1_BASE,PWM_INT_FAULT0); ROM_PWMOutputState(PWM1_BASE, PWM_OUT_0_BIT | PWM_OUT_1_BIT | PWM1_BASE | PWM_OUT_2_BIT | PWM_OUT_3_BIT |PWM_OUT_6_BIT | PWM_OUT_7_BIT, true); } void Timer0Isr(void) { //10000x per second ROM_TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); // Clear the timer interrupt irqcount++; timecount+=timeset; // 1 Hz is 192x256*256*256/10000=322122.5 if (timecount> 0xEFFFFFFF) timecount+=0xC0000000; if (timecount> 0xBFFFFFFF) timecount-=0xC0000000;; a=timecount>>16; a=a/(16384/(dots/3*2)); //a immer kleiner 2*dots: C000 *dots/3*2/ 4000= 12 *dots/3*2/4= 2*dots if (a<dots)ROM_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_0,period/2+sintable[a]*modu/256); else ROM_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_0,period/2-sintable[a-dots]*modu/256); a=a+dots*2/3; if (a>=2*dots) a-=2*dots; if (a<dots)ROM_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_2,period/2+sintable[a]*modu/256); else ROM_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_2,period/2-sintable[a-dots]*modu/256); a=a+dots*2/3; if (a>=2*dots) a-=2*dots; if (a<dots)ROM_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_6,period/2+sintable[a]*modu/256); else ROM_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_6,period/2-sintable[a-dots]*modu/256); ROM_PWMSyncUpdate(PWM1_BASE,PWM_GEN_0_BIT |PWM_GEN_1_BIT|PWM_GEN_3_BIT); switch(irqcount%10){ case 0: temperature=(temperature*127+analogRead(26))/128; break; case 1: voltage=(voltage*31+analogRead(27)*3)/32; break; case 2: current=(current*127+analogRead(25)*8)/128; break; case 3: poti=(poti*127+analogRead(28)*8)/128; break; } } void oh_shit(void) { //in case of severe overcurrent we shut down! ROM_PWMFaultIntClearExt(PWM1_BASE,PWM_INT_FAULT0); ROM_PWMOutputState(PWM1_BASE, PWM_OUT_0_BIT | PWM_OUT_1_BIT | PWM1_BASE | PWM_OUT_2_BIT | PWM_OUT_3_BIT |PWM_OUT_6_BIT | PWM_OUT_7_BIT, false); }  

  2. Like
    Automate reacted to igor in STM32L0 Ultra-Low-Power Seminar - Free - North America   
    Each attendee will receive a STM32L0 Discovery Kit, a STM32L0 Nucleo Board and a BlueNRG Bluetooth Low Energy shield.  The Discovery Kit has an ePaper display on it - kinda cool.
    Wish they had one in my area.
  3. Like
    Automate reacted to tml in MSP430-based solar-powered weather station   
    Hi Folks,
    Some time ago in a thread http://forum.43oh.com/topic/5550-simple-msp430f5529-bootloader/
    I shared my bootloader that I wrote for my weather station project.
    I'd like to share some info on the project that I have completed and that its now operating in the field.
    Link to the description: http://eltomek.blogspot.com/2014/10/diy-weather-station.html
    All comments are welcome. Thanks all from this forum who helped me in numerous posts where I had no idea how to get out of technical issues!
    Best Regards,

  4. Like
    Automate reacted to MORA99 in [Energia Library] WebSocketClient   
    This is a Websocket client library written mostly in highlevel c(++) to make it easyier to take in.
    It was tested on a CC3200 and earlier on a TM4C1294 but I think it should work on anything that provides the WifiClient/EthernetClient interface, and has decent amounts of RAM.
    Current code is a bit rough, it contains debug prints and I have not made much optimization work with it, especially concerning long strings where it just allocates up to 64kbyte of ram, but hopefully the user has some control over what is returned and can keep it short(ish).
    It does not support frames over 65kbyte nor binary data at the moment, but its not too hard to implement if needed.
    At the moment there is only 1 callback, when data is recieved, more callbacks could be added for connect, disconnect, ping, pong, etc.
    Well work in progress
    Like my dht lib the source code is maintained on github and my part of the code is released to public domain.
    The zip includes sha1 and base64 code that I didnt write, links to their home is included in top of WebSocketClient files.

  5. Like
    Automate got a reaction from pabigot in panStamp switching to CC430   
    The new panStamp NRG is still in beta.  If you e-mail them or post in the panStamp forum they may have some they can sell you.
  6. Like
    Automate got a reaction from abecedarian in Scan Interface Applications - Five Members Win A Target Board And An MSP-FET   
    Got my target board today so need to get in gear and start my project log this weekend.
  7. Like
    Automate reacted to tonrei in Tiva- Connected Launchpad DSO   
    Tiva- Connected Launchpad DSO
    Here is a beginners version of an Oscilloscope and Network Analyser, using the Connected Launchpad as digitiser and a modified version of the CircuitGear Mini Graphic User Interface of Syscomp Electronic Design Ltd. www.syscompdesign.com.
    1 channel differential @ 4 Msps or 2 channel diff. @ 2 Msps max.
    The 12 bit ADCs sample always at 2Msps, on lower required speeds the signals are oversampled as much as practical for an output of 14 bit unsigned integers. This makes aliasing-filtering easier.
    The timing is entirely done by the ADC-clock.
    The software is made with "Energia version 0101E0012" ; thanks for this "easy to start with" tool.
    and with the wiring_analog.c  from https://github.com/vladn2/Energia/ . (this one does not use interrupts).
    There are many comments in the code to explain the workings.
    There are timing problems while using Energia version 0101E0013 even with the new pde.jar for optimisation.
    With a AD9850  direct digital synthesis (DDS) as sine-wave generator, output frequency resolution of 0.0291 Hz with a 125 MHz reference clock. This is based on: http://forum.stellarisiti.com/topic/558-ad9850-with-energia/
    CircuitGear GUI modification.
    The offset (new in vertical.tcl) and Gnd-shift (in cursors.tcl) is now handled in the GUI (display.tcl), not in hardware. In display.tcl is channel C embedded as product of chan.A and B for power measurement. Change of the vertical settings or the cursors ends in a re-plot of the screen with the old data for further investigation.
    For the trigger-modes and options are buttons used, very handy especially for Single-shot to quickly stop acquisition when a freak signal occurs (the menus are still there). The Single-shot mode now also functions in the scan-mode, so that acquisition stops at the end of the screen.
    While developing, it became necessary to add a ‘disconnect,  item to the hardware menu.
    The Waveform Generator GUI sends its frequency value as one big number to the LaunchPad. Amplitude and offset are not used (yet).
    In the Network Analyser mode the logarithmic frequency settings and the right plot limit are changed and the ‘End Frequency’ is as measurement step added.
    The logarithmic steps are now set by the number of steps per decade.
    To implement these changes, install the GUI from www.syscompdesign.com. Than rename the original tcl-files in the source-directory that must be replaced by the modified ones and copy the modified versions in the source-directory. Also copy the two images (these were necessary to better fit my screen) in the Images-directory.
    Future plans:
    Build the analog part.
    Implement amplitude setting on the DDS.
    Implement a Hi-Res-mode by using a longer circular buffer.
    Tiva-DSO and GUI modification.zip
    CircuitGear display.zip
  8. Like
    Automate got a reaction from tripwire in Intel Edison   
    Relatively low power 500 MHz X86 CPU, 100 MHz Quark acting as MCU, Wifi, Bluetooth running Linux.
    What do you think?

  9. Like
    Automate got a reaction from pine in Intel Edison   
    Relatively low power 500 MHz X86 CPU, 100 MHz Quark acting as MCU, Wifi, Bluetooth running Linux.
    What do you think?

  10. Like
    Automate reacted to eelcor in ESP8266 - IoT on the cheap ;)   
    Hi everybody,
    People might have read the hackaday post describing the ESP8266. The ESP8266 is a really low price Wifi chip, which uses serial communication (just like the Wifly etc.) to connect to wifi. Although the CC3100 and CC3200 are the better chips, the ESP8266 main differentiating point is its ridiculous low price. I've ordered 8 for $3.50 each (aliexpress). It doesn't seem to support IPv6 out of the box, but there is an SDK, which might open future possibilities.
    I was thinking to make a library for energia to support the ESP8266. Anyone interested? Are there specific starting points to make this library usable?
    I am looking at two scenario's:
    - MQTT client - Relaying sensor data or control.
    - Web service - Returning a JSON object with sensor data.
    It would be nice to use the hooks of an ethernet library and only need to process strings/arrays of bytes. 
    Edit: As this wifi dongle uses an UART, how do I create two UARTS on a G2553?
    Kind regards,
    Eelco Rouw
  11. Like
    Automate got a reaction from greeeg in ESI Project: Single-Point Sensing of Whole-Home Water Usage   
    My city water rates are sky high so I was looking for a way to monitor my water usage and hopefully reduce it. I came across his paper "Single-Point Sensing of Whole-Home Water Activity" https://homes.cs.washington.edu/~jfogarty/publications/ubicomp2009.pdf .  They call the system HydroSense.

    Instead of using a water flow sensor at every faucet, tub, shower and appliance that uses water, a single pressure sensor is used to detect the water usage at every location.  This is accomplished by learning and recognizing the unique pressure pattern when water is turned on or off at each water usage location.  In this way you know not only how much water is used but also which location is using the water without the high cost and complexity of installing sensors at every location.

    One of the objectives of the HydroSense systems was to make it portable for a quick and easy install.  Therefore the single sensor/MCU was battery operated and could be installed on any water outlet including an outside faucet.
    The following are the major components of the HydroSense system as described in the white paper.

  12. Like
    Automate got a reaction from abecedarian in AC power usage Booster Pack   
    @@abecedarian ESI project to monitor his nephew's water and power usage got me thinking about this again.
    I came across this 6 channel energy measurement IC.  Seems like it would work well for monitoring multiple circuits from one location such as your home circuit breaker panel.  It would allow offloading all the complex voltage and current phase calculation to an external IC and just collect the values including power factor etc. over an SPI or I2C link.  http://www.analog.com/static/imported-files/overviews/ADE7816_Multichannel_Energy_Measurement_IC.pdf
  13. Like
    Automate reacted to abecedarian in ESI Project: Water Usage Monitoring   
    This project will involve measuring water usage in one of the bathrooms in my house, predominately for teaching my nephew, and possibly others, the value of conservation and efficient use of available resources. Additionally, I hope to implement monitoring the electricity usage in said bathroom as well as my nephew's bedroom in order to expand the lessons beyond what's obvious and into things which are taken for granted; might expand this to the whole house if it becomes feasible to do so.
    - Individual sensors with MCU, sensor and power source at each station, transmit data via wireless to central control station where calculations and report / monitoring occur.
    Monitored stations:
    - Shower. Individual hot/cold monitoring not required due to those being mixed at the valve.
    - Sink. Will require independent hot and cold monitoring due separate valves for each, mixing at the fixture and lack of space at the faucet outlet.
    - (future) Electrical: bathroom light, exhaust fan, bedroom light, various outlets, possibly entire house distribution panel, with inductive sensors.
    - Water: to be determined; will update this post as solutions are decided on.
    - Electrical: to be determined, likely inductive type; will update this post as solutions are decided on.
    Reporting / Display:
    - To be determined; I will update this post as solutions are decided on.
    - Would be nice to use the LCD peripheral in the FR6969.
    - Powering the devices.
    -- obtaining power for electrical monitoring can be done from the AC circuit in place.
    -- obtaining power for the water flow sensors will be more difficult but may be possible to generate power from the water flow itself.
    - Transporting data:
    -- Data will require wireless transmission.
    -- Simple transmission of sensor transitions, i.e. 'high' to 'low' with a 'StationID' seems plausible, so that said data can be fed to the ESI peripheral on the remote MCU.
    -- Transceiver types to be determined later; considering CCxxxx and nRF24 types at the moment.
    - Sensor data processing:
    -- Limited MCU resources: 4 ESI modules.
    --- Will require some means to switch between sensors since there will eventually be more sensors than ESI modules.
    --- Since data will be transmitted wirelessly, buffering data at the remote end and transmitting in bulk is an option. My thought here is the remote MCU 'records' data, then transmits that to the central station where the data is 'played back' into the ESI and interpreted. This should work well with the water flow sensors where flow data will likely be a bit stream from hall-effect sensors, but electrical may prove more difficult as it will probably be analog in nature.
    I welcome any comments and suggestions.
    And thank you TI for providing this opportunity!
  14. Like
    Automate got a reaction from abecedarian in ESI Project: Single-Point Sensing of Whole-Home Water Usage   
    My city water rates are sky high so I was looking for a way to monitor my water usage and hopefully reduce it. I came across his paper "Single-Point Sensing of Whole-Home Water Activity" https://homes.cs.washington.edu/~jfogarty/publications/ubicomp2009.pdf .  They call the system HydroSense.

    Instead of using a water flow sensor at every faucet, tub, shower and appliance that uses water, a single pressure sensor is used to detect the water usage at every location.  This is accomplished by learning and recognizing the unique pressure pattern when water is turned on or off at each water usage location.  In this way you know not only how much water is used but also which location is using the water without the high cost and complexity of installing sensors at every location.

    One of the objectives of the HydroSense systems was to make it portable for a quick and easy install.  Therefore the single sensor/MCU was battery operated and could be installed on any water outlet including an outside faucet.
    The following are the major components of the HydroSense system as described in the white paper.

  15. Like
    Automate reacted to DrOldies in Updated SPI lm4f library TM4C123 & TM4C1294   
    I wanted to improve the compatibility of the SPI.h lm4f library to include functions of arduino user contributed SPI.h libraries. I found SPI2.h here: http://forum.stellarisiti.com/topic/620-two-spi-modules. This library added multi-module features but removed the 123 & 1294 compatibility. I have merged SPI2 and the core SPI libs into spiE.h and added several more function variations. 
    spiE.h best features are:
    1. Array transfer up to 255 bytes. This is 5x faster than single byte transfer.
    2. SPI2's pinMode() and digitalWrire() functions are replaced with faster macros.
    3. Support for __TM4C129XNCZAD__, __TM4C1294NCPDT__, BLIZZARD_RB1 (LM4F) boards
    4. Up to 4 instances can be defined: SPI0, SPI1, SPI3, & SPI2 is instantiated by default as SPI for arduino code compatibility.
    5. Multiple SlaveSelect pins can be used fir multiple devices on one data line. defaultSS, default +SS2, or SS1 + SS2, etc.
    I have tested this on the 129. If you have a need for it and can try it on the other boards before I upload it to github, be my guest.
  16. Like
    Automate reacted to abecedarian in Scan Interface Applications - Five Members Win A Target Board And An MSP-FET   
    @@Automate - I received one earlier today and the PZ100D comes with 2 FR6989, and a 32.768KHz crystal, as well as four 1x25 pin male and four 1x25 female headers. The chips were Rev C so there should be no issues with the latest MSP-FET interface / MSP Debug firmware.
    The kit has a YAMAICHI socket for 100LQFP, has through-hole vias for a reset switch and a user-function switch, the latter connected to P1.3 and requiring a 47K 0805 resistor be placed, and pads for LED's that would connect to P1.1 and P1.2 through unpopulated 330R 0805 resistors.
    The crystal pads, yes there are two, do not have capacitors or resistors in place- those pads are 0805, and the crystal supplied is the same as what comes with the G2 LaunchPad.
    Under CCS6, when the debug interface was set up, it did prompt me to update the firmware on the MSP-FET, so I would expect that to happen with anyone using the latest CCS release.
    slau278s, pages 123-125, has the schematic and BOM for the board.
    *edit to add, in case my rambling wasn't 'clear', the LEDs, crystals, switches, resistors and capacitors I mentioned above are not populated, and only the crystal, two FR6989 chips and male/female headers come with it. The MSP-FET comes with a USB cable and JTAG cable. Both come with the standard disclaimers regarding use in controlled environments and such for various countries, and code usage / license information. TI compiler with CCS and IAR code usage limits are not 'relaxed' so one should consider that when developing.
    The TI reference with optical detector code compiles to under 4KB, including using the LCD interface peripheral so there is some room to wiggle.
  17. Like
    Automate reacted to nathancrum in New Dev Platform for MSP430FR5969   
    Hi Guys,
    My name is Nathan.  I've lurked around here on 43oh a bit, but this is my first official post.  I've been working with the MSP430FR5969 for several months now and I've quickly grown to really like it.  It seems to me TI's FRAM processors should really be getting more exposure for battery powered development in both professional and maker communities.
    To that end - I was hoping to get some feedback on a product idea.  We've packaged the FR5969 into a tiny coin-cell powered module.  The module can operate as a stand-alone processor or it can plug into an UNO-form-factor breakout board with an eZ-FET lite programmer, allowing you to program it with CCS or Energia.
    We're waiting on the first PCB's to debug the base product right now, but the goal would eventually be to offer with with a handful of matching small daughter-boards to add WiFi, BTLE and either the Sharp LS013B4DN04 hybrid screen or an e-ink display - all except the WiFi would be powered directly by the coin cell (WiFi would require a couple AAA's).  It might make sense to have a few sensor boards too depending on interest level (humidity/temp, compass, GPS, accel, gyro, prox, etc.)
    Does that make sense?  Any thoughts?  Is this a product you think people would be interested in?  It doesn't seem like anyone is offering really well-packaged small, ULP, battery powered MCU modules, especially with Arduino code compatibility and this would fill a good niche (certainly one I have some uses for anyway).
    Anyway - I'd appreciate any feedback or suggestions.  Thanks.
  18. Like
    Automate reacted to jpitz31 in My Attempt at the LaunchPad ZIF socket   
    Hi All,
    I have read the other posts about the problems with attempting to unsolder the chip socket from the mps430 launchpad.  Believe me I have a stack of trashed boards that have the through hole copper trace shot.  I also wanted to retain the onboard 32Khz watch crystal.
    So digging through the parts box and trying different things I came up with the following easy to install version of the ZiIF socket install.
    I purchased some 10 pin female header sockets, trimmed the pins down.  Purchases a few ZIF sockets, mine indicate TFXTDOL.
    Removed the msp430 chip, Inserted the female pin headers and inserted the ZIF socket.
    Concerned that the longer pins and socket would interfere with the operation of the watch crystal I downloaded the Verify_Crystal and tested the program.
    At first I had some issues with the crystal faulting.  But after added the following line to the program.  The Verify_Crystal program runs just fine.
    BSCCTL3 |= XCAP_3;  which enables the 12.5 pF.
    Enclosed are some pics.
    Easy Peasy

  19. Like
    Automate reacted to zeke in One Wire Controller booster   
    I am excited about this one. I finally made some time to work on my one wire controller board tonight.  I placed all the component on it tonight and it looks good to me. 
    This design has a single DS2482 One Wire Master controller servicing eight one wire ports that will be selectively enabled with analog switches.
    The MSP430 will talk to the DS2482 via I2C and it will take care of all the communication timing.
    Theoretically, you could hook up an obscene number of DS18B20 temperature sensors to this. In the lab, I have testing this circuit with about 600 DS18B20 sensors on it. 
    Practically, you would be limited by the capacitance of the cable as the lengths increased. There was no cable in the lab test.
    This board will work with any one wire devices so you are not limited to just temperature sensors.
    The intention is to create a mating board that contains an MSP430, power supply, mass storage device and communications. That board will be one of my re-launchpad board designs. Probably the 5529 based design so I can get the USB port.
    What do you guys think?
    Edit: Added schematic PDF.

  20. Like
    Automate reacted to JonnyBoats in TI and Temboo partner for IoT   
    From: http://e2e.ti.com/group/launchyourdesign/b/blog/archive/2014/09/10/ti-and-temboo-are-building-the-internet-of-things.aspx
  21. Like
    Automate reacted to jpnorair in STMicroelectronics EFL700A39 Rechargeable 200um Paper Thin Battery   
    There was a company called "Infinite Power Solutions" that used to make a battery like this, and which pioneered the technology.  Actually, the technology was pioneered at Oak Ridge National Laboratory, but the guy from Oak Ridge founded IPS.  IPS raised enough money to build a nice factory in Colorado (I've been there!), but things didn't really work out for them.
    For ST to license the tech from Oak Ridge and then to spend 3 years developing it (this project has been going for 3 years, but you couldn't buy it until now), indicates to me that they have some particular customer in mind.  Maybe the ESA or something like that.
    My opinion of the Lithium-Thin-Film battery is that Li-Poly technology is very nearly as good, at this point, and it is a whole-lot cheaper.  For doing energy harvesting, ST is also releasing SPV1050, which competes with the BQ25504 from TI, but it is a lot cheaper.  Both of these chips work to charge Li-Poly AND Lithium-Thin-Film batteries from sources like solar, piezo, etc. I have tested all these combinations 
  22. Like
    Automate reacted to cubeberg in Wireless security system + IoT   
    So I've been meaning to work on something for this for quite some time, but I finally bit the bullet and started.  
    I'm designing a wireless security system - with the intention that it'll upload data to a personal API I'm developing.  It started out as purely a security system (door open/closed, motion detection) - but I threw in some sensors while I was developing the boards.  This isn't intended to replace a real security system - but it's a fun practice on many levels.  I'm working on learning the CC3200, setting up a node network, etc.  
    Wireless devices consist of MSP430's and a NRF24L01+ (cheap - had a few on hand).  
    Door sensors will probably be 2452's - they're very basic.  Run by a coin cell.  I purchased some cheap magnetic door/window sensors on ebay.

    Motion sensors will run a 2553 and contain several other sensors.  These will be run on 2xAA's.  
    I've added a temperature sensor (TMP102), light sensor (same as the one I used on the badge), and volume circuit (not to capture audio - just room volume levels - based on a sparkfun breakout).  
    It's designed to support a 20 pin DIP 2553 or a 28 pin TSSOP if extra IO are needed.
    Motion sensor is the cheap PIR sensor board from eBay - I'll be taking off the voltage converter because it runs at 3v levels

    I've got a ton of work ahead of me - here are just a few things off the top of my head
    Sensor unique identification (ideally I'd like the sensors to auto-id themselves) Set up the CC3200 as a hub Easily accessible web services (I'll be writing this in .NET most likely - although I may consider a local phant.io install) + a decent database Visualization of sensor output Alerts Security - not a huge concern (not sure who would hack it) but I want to consider it - likely a later phase One thing I'd like to add - RFID for arm/disarm of the system.  I've got some RFID boards on hand - should be able to whip up something.  
    Cases for the sensors will be 3D printed.  Should be pretty simple to do but it'll be a good exercise in designing nice & accessible cases.  I'll probably add an easily-accessible programming header for easy updates.
    I'll post the eagle files + gerbers later.  If you're really itching to see them - let me know.
  23. Like
    Automate reacted to spirilis in New Energia release 0101E0013 - 09/05/2014   
    NEW FEATURE folks will want to be aware of!
    For msp430 and lm4f (Tiva/Stellaris), there are three new ways to pause or halt the CPU-
    void sleep(uint32_t milliseconds);
    void sleepSeconds(uint32_t seconds);
    void suspend();
    and a complementary function: wakeup()
    For the lm4f/tm4c platform, these are mostly just placeholders that do not consume any less power than usual; in the future I'd like to explore the ARM's low-power features to make them workable.
    For msp430 though, the first two use LPM3 modes, and the third enters LPM4.
    Energia tests XT1 osc. fault on reset to see if a 32.768KHz XTAL is present; if so, ACLK is set to that and it's noted that ACLK is being driven at 32.768KHz.  If not, VLOCLK is used and its nominal frequency is assumed to be its speed.
    When sleep() is called, the WDT is reworked to fire every ~1.9ms (varies XT1 vs VLO) using WDT_ADLY_1_9 while incrementing millis() and micros() as accurately as it can (which isn't always accurate... particularly with VLOCLK).  Alas, it does give you true LPM3 mode!
    sleepSeconds() uses WDT_ADLY_250, which is a much more coarse sleep interval but allows the chip to spend a whole lot more time asleep.
    suspend() just runs LPM4.
    The catch here is that normally IRQs firing won't wake up the chip permanently, and since Energia occupies the ISRs with its own routines, it's not possible for a user's ISR (registered via attachInterrupt() or similar) to run __bic_SR_register_on_exit to cancel the LPM mode.
    Enter wakeup().  The wakeup() function sets a volatile global flag which signals to the sleep(), sleepSeconds() or suspend() function that sleep mode should be aborted.  Moreover, many of the ISRs have been reworked to check for a change in this flag after it executes the user's ISR in order to determine if it should run __bic_SR_register_on_exit(LPM4_bits) itself.  This allows the user's ISR to cancel LPM mode.
    These functions (sleep(), sleepSeconds(), suspend() and wakeup()) also exist on the lm4f/tm4c platform, they just don't use any particularly low-power modes yet.  But still, the code should port over, and it does give you as a programmer a simple way to "halt" the CPU or pause with the option of aborting it early.
    Also note, LPM3/LPM4 will cause any Serial input to be corrupt, since the SMCLK isn't running for the UART module to correctly detect the bits.  This isn't the case for the Tiva/Stellaris yet, but will be once we implement true low power modes over there.
    The wakeup() handler has been added to the I2C ISR handler too, so it is (in theory) possible to configure the chip as an I2C slave with the Wire library and then suspend() to enter LPM4, then wakeup() upon receiving a request, since I2C is clocked externally.  (I haven't actually tested this yet...)
    I never got around to adding these functions to the cc3200 port, but will do so by the next release (or maybe offer a patch for it in between).
    (I just added the suspend() and wakeup() stuff, all props go to @@energia for the sleep/sleepSeconds/ACLK implementation )
  24. Like
    Automate reacted to energia in New Energia release 0101E0013 - 09/05/2014   
    I am happy to announce that release 0101E0013 just went up on http://energia.nu. This release adds support for the awesome CC3200 WiFi LaunchPad and CC3100 BoosterPack for MSP430 and TivaC.
    I want to thank everybody for their support and contributions. Energia would not have been possible without such an awesome community!
    Details of the release can be found on http://energia.nu
  25. Like
    Automate reacted to bluehash in Scan Interface Applications - Five Members Win A Target Board And An MSP-FET   
    ------- Looks like I got everyone ------
    List is closed. Thank you for your entries.
    Ti has agreed to send each of the listed entries a kit( FET + Board ).... which is certainly awesome on their part.
    Thanks TI! 
    @abecedarian -: Water supply usage
    @chicken -------: Resistive touchscreen pattern detector
    @Fred -----------: Laser cutter coolant and temperature monitor
    @greeeg --------: Fitness monitor
    @bobnova -------:Digital tachometer, speedometer, and intelligent shift light.
    @Automate ------:Single-Point Sensing of Whole-Home Water Activity
    @pjkim ------------: Speed Controller
    Please send me your mail addresses at admin  ( the at sign ) 43oh . com
    It would be much appreciated if you could all start project threads with your ideas in the the Projects section.
  • Create New...