-
Content Count
110 -
Joined
-
Last visited
-
Days Won
3
Reputation Activity
-
NJC got a reaction from xxx1 in BLE BoosterPack (BLE112)
Hi Everyone!
Recently, I released a Bluetooth Low Energy BoosterPack based on the BLE112 module from Bluegiga. The full-featured BoosterPack is a bit expensive, but there are a few different options that can make the BoosterPack very reasonable. I wanted to create this post so that you guys can ask me any questions you may have about it.
Blank PCB: $10 - The BLE BoosterPack was designed with 0805 components and other easy to solder parts making it easy to hand assemble. For $10, you get a blank BoosterPack that can you assemble yourself. The layout and bill of materials (BOM) is available on GitHub. If you need help with finding a component on Mouser or Digikey, let me know.
BLE Only: $40 - This options contains all you need to use the BLE112 module with a LaunchPad. Additionally, the USB connector is included, allowing stand-alone use with your PC and USB firmware updates. This means that you don't need the CC Debugger to update the BLE112 firmware.
Complete with Linear Regulator: $50 - Rather than using a switching regular, this option uses a linear regulator to reduce cost. Other than using a different regulator, this is the full-featured BoosterPack.
Complete with Switching Regulator: $65 - If you care about maximizing your battery life, this is the board for you. Using the TI recommended switching regulator, this board can has unbeatable power consumption.
Check out the demo video for a bit more info.
While the full-featured board is a bit pricey, it does include all you need to make your project completely wireless: A BLE module, a lithium battery charging circuit, and low-power voltage regulator.
If you have any questions, please don't hesitate to comment here.
Thanks guys!
-
NJC got a reaction from simpleavr in BLE BoosterPack (BLE112)
Hi Everyone!
Recently, I released a Bluetooth Low Energy BoosterPack based on the BLE112 module from Bluegiga. The full-featured BoosterPack is a bit expensive, but there are a few different options that can make the BoosterPack very reasonable. I wanted to create this post so that you guys can ask me any questions you may have about it.
Blank PCB: $10 - The BLE BoosterPack was designed with 0805 components and other easy to solder parts making it easy to hand assemble. For $10, you get a blank BoosterPack that can you assemble yourself. The layout and bill of materials (BOM) is available on GitHub. If you need help with finding a component on Mouser or Digikey, let me know.
BLE Only: $40 - This options contains all you need to use the BLE112 module with a LaunchPad. Additionally, the USB connector is included, allowing stand-alone use with your PC and USB firmware updates. This means that you don't need the CC Debugger to update the BLE112 firmware.
Complete with Linear Regulator: $50 - Rather than using a switching regular, this option uses a linear regulator to reduce cost. Other than using a different regulator, this is the full-featured BoosterPack.
Complete with Switching Regulator: $65 - If you care about maximizing your battery life, this is the board for you. Using the TI recommended switching regulator, this board can has unbeatable power consumption.
Check out the demo video for a bit more info.
While the full-featured board is a bit pricey, it does include all you need to make your project completely wireless: A BLE module, a lithium battery charging circuit, and low-power voltage regulator.
If you have any questions, please don't hesitate to comment here.
Thanks guys!
-
NJC got a reaction from spirilis in BLE BoosterPack (BLE112)
Hi Everyone!
Recently, I released a Bluetooth Low Energy BoosterPack based on the BLE112 module from Bluegiga. The full-featured BoosterPack is a bit expensive, but there are a few different options that can make the BoosterPack very reasonable. I wanted to create this post so that you guys can ask me any questions you may have about it.
Blank PCB: $10 - The BLE BoosterPack was designed with 0805 components and other easy to solder parts making it easy to hand assemble. For $10, you get a blank BoosterPack that can you assemble yourself. The layout and bill of materials (BOM) is available on GitHub. If you need help with finding a component on Mouser or Digikey, let me know.
BLE Only: $40 - This options contains all you need to use the BLE112 module with a LaunchPad. Additionally, the USB connector is included, allowing stand-alone use with your PC and USB firmware updates. This means that you don't need the CC Debugger to update the BLE112 firmware.
Complete with Linear Regulator: $50 - Rather than using a switching regular, this option uses a linear regulator to reduce cost. Other than using a different regulator, this is the full-featured BoosterPack.
Complete with Switching Regulator: $65 - If you care about maximizing your battery life, this is the board for you. Using the TI recommended switching regulator, this board can has unbeatable power consumption.
Check out the demo video for a bit more info.
While the full-featured board is a bit pricey, it does include all you need to make your project completely wireless: A BLE module, a lithium battery charging circuit, and low-power voltage regulator.
If you have any questions, please don't hesitate to comment here.
Thanks guys!
-
NJC got a reaction from larsie in LaunchScope
I finally got around to posting my final post in the scope series. I just wanted to thank Doc for his help a while ago with testing the code. If anyone finds any errors, or typos, or anything else please let me know; its hard to make sure everything is perfect.
http://www.msp430launchpad.com/2010/12/ ... scope.html
Any ideas on the next post? I'm open to suggestions. For now I'm thinking I2C communication between multiple chips, but I would not mind a distraction from my all my plans.
-
NJC got a reaction from MarkoeZ in LaunchScope
I finally got around to posting my final post in the scope series. I just wanted to thank Doc for his help a while ago with testing the code. If anyone finds any errors, or typos, or anything else please let me know; its hard to make sure everything is perfect.
http://www.msp430launchpad.com/2010/12/ ... scope.html
Any ideas on the next post? I'm open to suggestions. For now I'm thinking I2C communication between multiple chips, but I would not mind a distraction from my all my plans.
-
NJC got a reaction from zeke in Hot air pencil recommendation?
For a bit more expensive option, I just recently purchased one of these on a whim.
http://cgi.ebay.com/2in1-SMD-Hot-Air-Re ... 3848wt_968
I'm not sure I really got the best bang for my buck, but I needed it quickly and decided to impulse buy it. Turns out,it works really well and I am very impressed with it. I can't speak to the durability and longevity of it since I have had it for only 2 months now. But I really love the extra tips and nozzles and love only having one solder tool on my work bench.
-
NJC got a reaction from bluehash in Hot air pencil recommendation?
For a bit more expensive option, I just recently purchased one of these on a whim.
http://cgi.ebay.com/2in1-SMD-Hot-Air-Re ... 3848wt_968
I'm not sure I really got the best bang for my buck, but I needed it quickly and decided to impulse buy it. Turns out,it works really well and I am very impressed with it. I can't speak to the durability and longevity of it since I have had it for only 2 months now. But I really love the extra tips and nozzles and love only having one solder tool on my work bench.
-
NJC reacted to juani_c in 50% off from Ti e-store............
I found these boards and thought that maybe is one those but I really can't tell. I made a search in TI's e-Shop and there is nothing similar to a Smart metering board. Kind of a mistery....
Is something like Gift horse actually. The complete phrase is; A caballo regalado no se le miran los dientes. I found a very similar phrase in English; Don't look a gift horse in the mouth.
-
NJC reacted to OCY in Are MSP430 wake up times clock source dependent?
It depends on how "deep" is the sleep.
If only the CPUOFF is set, it only takes n cycle of MCLK to start the CUP.
If the source of MCLK is off, extra time is needed to start up that clock.
If DCO is off but its current source is on, it only takes a few usecs.
If the current source is off, extra usecs are needed.
-
NJC reacted to GeekDoc in MSP430F2274 TSSOP 38 Breakout board?
If you end up designing your own board, I highly recommend The Dorkbot/PDX order. I had some made, and they are excellent quality and cheap! (Do be sure to double-check your designs, though. :oops: )
-
-
NJC got a reaction from frozencarbonite in Basic Examples
My blog has a few good posts for beginners and shows how to use a few peripherals which might be a good reference in addition to all the great links already posted in this thread.
http://www.msp430launchpad.com/2010/07/ ... oject.html - this post shows how to use buttons with the LaunchPad.
There are a bunch of other newer posts which involve the ADC in the chip that comes with the LaunchPad.
Hope thats some help.
-
NJC reacted to nemi in (Dual) Monitor auto windows desktop rotation
Hi Everyone,
my first project with the launch pad is to automatically rotate my windows desktop orientation when I rotate my monitors.
I have been working with dual monitors for a while but recently got a monoprice dual monitor stand that allows rotation.
http://www.monoprice.com/products/product.asp?c_id=109&cp_id=10828&cs_id=1082808&p_id=5560&seq=1&format=2
I then had the idea to implement my own hardware sensor to detect when they had been rotated to portrait (or even up-side-down).
The circuit is simple and the pictures should explain everything.
The hardware is the standard TI launchpad development board, together with Qty.4 tilt switches.
I made a shield with two of the tilt switches on the launch pad (for mouing on the rear of monitor 1) and a mini pcb with the other two tilt switches (for the rear of monitor 2). Some wires a routed between the two.
I'm using 4 pins as digital input pulled high. the tilt switches short to ground when closing the circuit. 2 tilt switches for each monitor encode the 4 possible positions (for each monitor).
By placing the tilt switchers at 45 degrees to up-down and left-right there is good stability.
Power, VCC and Qty.1 digital output (currently assigned to launch pad LEDs) are brought out to each PCB for any future expansion (e.g. ambient rear illumination etc.),
The launchpad had version 0.01 of my general purpose IO code so that a windows program can read the status via com port serial command ("r").
here is the launchpad code:
// General purpose serial I/O (9600 baud) for launchpad // Peter R.H. 12/30/2010 onwards // heavily modified example 9600 uart code and other items // history // 1/1/2011 - "t" command not yet working. // original uart example notes //****************************************************************************** // MSP430G2xx1 Demo - Timer_A, Ultra-Low Pwr UART 9600 Echo, 32kHz ACLK // // Description: Use Timer_A CCR0 hardware output modes and SCCI data latch // to implement UART function @ 9600 baud. Software does not directly read and // write to RX and TX pins, instead proper use of output modes and SCCI data // latch are demonstrated. Use of these hardware features eliminates ISR // latency effects as hardware insures that output and input bit latching and // timing are perfectly synchronised with Timer_A regardless of other // software activity. In the Mainloop the UART function readies the UART to // receive one character and waits in LPM3 with all activity interrupt driven. // After a character has been received, the UART receive function forces exit // from LPM3 in the Mainloop which configures the port pins (P1 & P2) based // on the value of the received byte (i.e., if BIT0 is set, turn on P1.0). // ACLK = TACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO // //* An external watch crystal is required on XIN XOUT for ACLK *// // // MSP430G2xx1 // ----------------- // /|\| XIN|- // | | | 32kHz // --|RST XOUT|- // | | // | CCI0B/TXD/P1.1|--------> // | | 9600 8N1 // | CCI0A/RXD/P1.2|<-------- // // D. Dang // Texas Instruments Inc. // October 2010 // Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10 //****************************************************************************** #include "msp430g2231.h" //------------------------------------------------------------------------------ // Hardware-related definitions //------------------------------------------------------------------------------ #define UART_TXD 0x02 // TXD on P1.1 (Timer0_A.OUT0) #define UART_RXD 0x04 // RXD on P1.2 (Timer0_A.CCI1A) //------------------------------------------------------------------------------ // Conditions for 9600 Baud SW UART, SMCLK = 1MHz //------------------------------------------------------------------------------ #define UART_TBIT_DIV_2 (1000000 / (9600 * 2)) #define UART_TBIT (1000000 / 9600) //------------------------------------------------------------------------------ // Global variables used for full-duplex UART communication //------------------------------------------------------------------------------ unsigned int txData; // UART internal variable for TX unsigned char rxBuffer; // Received UART character //------------------------------------------------------------------------------ // Function prototypes //------------------------------------------------------------------------------ void TimerA_UART_init(void); void TimerA_UART_tx(unsigned char byte); void TimerA_UART_print(char *string); //void ConfigureAdcTempSensor(void); // vars long temp; long IntDegF; long IntDegC; unsigned int TXByte; //------------------------------------------------------------------------------ // main() //------------------------------------------------------------------------------ void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer //for temperature reading TACTL = TASSEL_2 | MC_2; while (TAR < 30); // --- DCOCTL = 0x00; // Set DCOCLK to 1MHz BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; P1OUT = 0x00; // Initialize all GPIO P1SEL = UART_TXD + UART_RXD; // Timer function for TXD/RXD pins // Set all pins but RXD, P1.3, P1.4, P1.5, P1.7 to output P1DIR = 0xFF & ~UART_RXD & ~0x08 & ~0x10 & ~0x20 & ~0x80; //unable to set P1.3 to pull low so set all the others to pull up (!) P1IN |= BIT4; //enables input P1REN |= BIT4; // enables resistor P1OUT |= BIT4; //resistor set to pull up P1IN |= BIT5; //enables input P1REN |= BIT5; // enables resistor P1OUT |= BIT5; //resistor set to pull up P1IN |= BIT7; //enables input P1REN |= BIT7; // enables resistor P1OUT |= BIT7; //resistor set to pull up P2OUT = 0x00; P2SEL = 0x00; P2DIR = 0xFF; __enable_interrupt(); TimerA_UART_init(); // Start Timer_A UART TimerA_UART_print("\r\r\rREADY.\r\n"); for (; { // Wait for incoming character __bis_SR_register(LPM0_bits); // Echo received character TimerA_UART_tx(rxBuffer); // Update board outputs according to received byte if (rxBuffer == '1') P1OUT |= 0x01; if (rxBuffer == '!') P1OUT &= ~0x01; if (rxBuffer == '6') P1OUT |= 0x40; if (rxBuffer == '^') P1OUT &= ~0x40; if (rxBuffer == 't') { ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start __bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled temp = ADC10MEM; // oF = ((A10/1024)*1500mV)-923mV)*1/1.97mV = A10*761/1024 - 468 IntDegF = ((temp - 630) * 761) / 1024; // oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278 IntDegC = ((temp - 673) * 423) / 1024; TXByte = (unsigned char)(IntDegC); TimerA_UART_tx(TXByte); TXByte = (unsigned char)(','); TimerA_UART_tx(TXByte); TXByte = (unsigned char)(IntDegF); TimerA_UART_tx(TXByte); } if (rxBuffer == 'r') { TimerA_UART_tx(';'); if ((8 & P1IN)) TimerA_UART_tx('1'); // if P1.3 set else TimerA_UART_tx('0'); if ((16 & P1IN)) TimerA_UART_tx('1'); // if P1.4 set else TimerA_UART_tx('0');rrr if ((32 & P1IN)) TimerA_UART_tx('1'); // if P1.5 set else TimerA_UART_tx('0'); if ((128 & P1IN)) TimerA_UART_tx('1'); // if P1.6 set else TimerA_UART_tx('0'); TimerA_UART_tx('.'); } } } //------------------------------------------------------------------------------ // Function configures Timer_A for full-duplex UART operation //------------------------------------------------------------------------------ void TimerA_UART_init(void) { TACCTL0 = OUT; // Set TXD Idle as Mark = '1' TACCTL1 = SCS + CM1 + CAP + CCIE; // Sync, Neg Edge, Capture, Int TACTL = TASSEL_2 + MC_2; // SMCLK, start in continuous mode } //------------------------------------------------------------------------------ // Outputs one byte using the Timer_A UART //------------------------------------------------------------------------------ void TimerA_UART_tx(unsigned char byte) { while (TACCTL0 & CCIE); // Ensure last char got TX'd TACCR0 = TAR; // Current state of TA counter TACCR0 += UART_TBIT; // One bit time till first bit TACCTL0 = OUTMOD0 + CCIE; // Set TXD on EQU0, Int txData = byte; // Load global variable txData |= 0x100; // Add mark stop bit to TXData txData <<= 1; // Add space start bit } //------------------------------------------------------------------------------ // Prints a string over using the Timer_A UART //------------------------------------------------------------------------------ void TimerA_UART_print(char *string) { while (*string) { TimerA_UART_tx(*string++); } } //------------------------------------------------------------------------------ // Timer_A UART - Transmit Interrupt Handler //------------------------------------------------------------------------------ #pragma vector = TIMERA0_VECTOR __interrupt void Timer_A0_ISR(void) { static unsigned char txBitCnt = 10; TACCR0 += UART_TBIT; // Add Offset to CCRx if (txBitCnt == 0) { // All bits TXed? TACCTL0 &= ~CCIE; // All bits TXed, disable interrupt txBitCnt = 10; // Re-load bit counter } else { if (txData & 0x01) { TACCTL0 &= ~OUTMOD2; // TX Mark '1' } else { TACCTL0 |= OUTMOD2; // TX Space '0' } txData >>= 1; txBitCnt--; } } //------------------------------------------------------------------------------ // Timer_A UART - Receive Interrupt Handler //------------------------------------------------------------------------------ #pragma vector = TIMERA1_VECTOR __interrupt void Timer_A1_ISR(void) { static unsigned char rxBitCnt = 8; static unsigned char rxData = 0; switch (__even_in_range(TAIV, TAIV_TAIFG)) { // Use calculated branching case TAIV_TACCR1: // TACCR1 CCIFG - UART RX TACCR1 += UART_TBIT; // Add Offset to CCRx if (TACCTL1 & CAP) { // Capture mode = start bit edge TACCTL1 &= ~CAP; // Switch capture to compare mode TACCR1 += UART_TBIT_DIV_2; // Point CCRx to middle of D0 } else { rxData >>= 1; if (TACCTL1 & SCCI) { // Get bit waiting in receive latch rxData |= 0x80; } rxBitCnt--; if (rxBitCnt == 0) { // All bits RXed? rxBuffer = rxData; // Store in global variable rxBitCnt = 8; // Re-load bit counter TACCTL1 |= CAP; // Switch compare to capture mode __bic_SR_register_on_exit(LPM0_bits); // Clear LPM0 bits from 0(SR) } } break; } } //------------------------------------------------------------------------------ // ADC10 interrupt service routine #pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR (void) { __bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR) }
On the windows desktop side I am using the free software iRotate which provide hotkeys for roating the monitor layout.
http://www.entechtaiwan.com/util/irotate.shtm
I then coded an AutoIt program to poll the launchpad via serial and simualte pressign the correct irotate hot-keys.
I have the irotate program and this autoit one in my windows startup folder.
If you duplicate this project you may have to change this code if your tilt switches are different orientations and/or pins
my autoit code is:
; Monitor rotate code ; Peter 1/1/2011 ; based upon serial code by "martin" ; http://www.autoitscript.com/forum/topic/45842-serial-port-com-port-udf/ ; http://www.mosaiccgl.co.uk/AutoItDownloads/confirm.php?get=COMMGv2.zip #include #include 'CommMG.au3';or if you save the commMg.dll in the @scripdir use #include @SciptDir & '\commmg.dll' #include #include #include #include ; keep track of new/old monitor states $m1old="" $m1="" $m2old="" $m2="" ; ^ = Control , + = shift , ! = ALT ; monitor 1 HotKeys $sup1="^!{UP}" $sdown1="^!{DOWN}" $sleft1="^!{LEFT}" $sright1="^!{RIGHT}" ; monitor 2 HotKeys $sup2="^+{UP}" $sdown2="^+{DOWN}" $sleft2="^+{LEFT}" $sright2="^+{RIGHT}" while ProcessExists("iRotate.exe")=False sleep(1000) ; allow irotate to start up WEnd sleep(2000) $serror="" _CommSetPort(5, $serror, 9600, 8, 0, 1, 0, 0, 0) while 1 sleep(200) _CommSendString("r",0) sleep(500) $sread = _CommGetLine(".",10,800) ;MsgBox(0,"responce",$sread) ;monitor 1 $m1=stringmid($sread,4,2) if $m1<>$m1old Then switch $m1 case "00" send($sup1,0) case "10" send($sright1,0) case "01" send($sleft1,0) case "11" send($sdown1,0) Endswitch EndIf $m1old=$m1 ;monitor 2 $m2=stringmid($sread,3,1)&stringmid($sread,6,1) if $m2<>$m2old Then switch $m2 case "00" send($sup2,0) case "10" send($sright2,0) case "01" send($sleft2,0) case "11" send($sdown2,0) Endswitch EndIf $m2old=$m2 sleep(1300) WEnd
It uses the autoit serial routines from "Martin"
http://www.autoitscript.com/forum/topic/45842-serial-port-com-port-udf/
Enjoy!
circuit pictures in the next post.
-
NJC reacted to GeekDoc in I am a Noob and I need help.
I second the recommendation to read NJC's blog. He's VERY good at explaining the concepts and what each part of the code does.
I also suggest having a look around the internet for C++ tutorials. There are several good ones that start you from the beginning.
Welcome, and best of luck!
-
NJC got a reaction from juani_c in Is this an MSP430?
Well here are a few pointers. Its much easier to use an opto-isolator with a digital signal than an analog one, the only thing to look out for with using a digital stream over an opto-isolator is how fast the isolator can switch at. I use 2 AAA batteries and use the built in isolation from the MSP430F5528 chip for USB (no idea if this is really safe enough for me to let anyone else use it though). An easy way around that is to also just use 2 MSP430s connected via IR, the one thats hooked up to the analog stuff is battery powered. A good rule of thumb, have no possible connection between yourself and ground.
PLEASE NOTE: This is just the ramblings of a crazy engineering student. Only put electrodes on your body at your own risk. Do NOT to hook ANY electronics up to your body or anyone else's. So please, do not take my crazy assumptions and thoughts as facts, no matter how factual they may sound. (Be careful please, :-P).
Books I have and like for Biomedical related electronics stuff. The books are expensive new, but I found great prices of them used ($30 each).
Design and Development of Medical Electronic Instrumentation
http://www.amazon.com/gp/product/0471676233?ie=UTF8&tag=msp0d-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0471676233
Medical Instrumentation Application and Design
http://www.amazon.com/gp/product/0471676004?ie=UTF8&tag=msp0d-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0471676004
-
NJC got a reaction from bluehash in LaunchScope
Hey everyone....
@bluehash:
heres the answer to your question from my blog comments. I hope I answered your question, if not, let me know. About your first comment, Berstein's library is amazing for sure! I can't believe it took me so long to find it, very easy to use and customize.
@simpleavr
DC means no change in voltage (0Hz), you can have AC with a voltage offset. So it is possible to measure an AC signal if you are careful to make sure the voltage ranges stay within the 0V to 3V (or VCC) range. I actually use this for reading something similar to an EKG; the analog input comes from an op-amp amplification and filtering stage. The trick is to make a reference voltage (or a "virtual ground" as I like to call it) at about VCC/2. For example, running on 3V with the MSP430, provide your analog circuitry with 1.5V as a "virtual ground", so to your analog device 3V seems like +1.5V, and GND seems like -1.5V. I know it sounds complicated, if I'm not making sense I can draw something up quick for you. It's a nice trick which has helped me immensely.
@doc and rob
hmmm, logic analyzer, I can put some thought into it. the problem is that the msp430 code would be super simple and that would turn into more of a software (computer appplication) project. i'll think about it though, i might be able to do something tricky with it. plus i could then explain how to make and use buffers in the chip... hmmm....
and doc, keep us posted with the nokia LCD! very interesting, I would love to see how that comes out. I've been thinking of getting an LCD to play with myself, but I think I want a bluetooth device first.
-
NJC got a reaction from juani_c in Is this an MSP430?
I'm REAL glad you mentioned this! Here's why: I just did a search to see if I could find a link for you to the IEEE document that explains the algorithm I am using for beat detection. I have an IEEE subscription so I can get the article, but I'm not allowed to just share it with everyone sadly. Anyway, my search led me to the actual document I use on a random universities website (not sure how they get away with posting it though, I won't ask, lol). Though heres the interesting part, the university provides an errata sheet at the end of the article which corrects a few errors which I did not know about!
Enough of my rambling, here is the link to the site: http://www.engr.wisc.edu/bme/faculty/tompkins_willis/Pan.pdf
If you also have questions about the analog side of Biomedical Instrumentation let me know, I could also recommend a few textbooks which are great resources. Though the circuit for an EKG is VERY simple.
-
NJC reacted to bluehash in Digital LED Clock
They don't "communicate". There is a clock line going to each slave from the master.
-
NJC got a reaction from bluehash in LaunchScope
I finally got around to posting my final post in the scope series. I just wanted to thank Doc for his help a while ago with testing the code. If anyone finds any errors, or typos, or anything else please let me know; its hard to make sure everything is perfect.
http://www.msp430launchpad.com/2010/12/ ... scope.html
Any ideas on the next post? I'm open to suggestions. For now I'm thinking I2C communication between multiple chips, but I would not mind a distraction from my all my plans.
-
NJC reacted to Maris in Interfacing Launchpad to Digital Caliper
Hello there,
I'm new here and this is my first Launchpad project. May I apply for project of the moth contest? (BTW this is cool idea as those kind of things always help to find motivation to describe what you did not just stop when you see everything is working)
I recently bought digital caliper and decided to try to read it's data port readings from my Launchpad. One of uses would be to use caliper for precise position sensor if 8Hz updates are enough. It had Clock and Data pin. Had to setup pin that connects to Clock to trigger interrup on every pulse and then in interrupt function do bit shifting to assemble 16 bit signed integer representing caliper reading. Then sent it out to PC via soft UART serial port. For that I reused examples from well known blog at http://www.msp430launchpad.com/.
Also I had to figure out how to connect calipers lines to MSP430 as caliper is using 1.5V levels where MSP430 +3V levels. Used two transistors and two resistors and breadboard to amplify levels. Schematics:
Also took caliper apart just to find out what principle is used to sense position changes:
You can find full source code and detailed explanation in article I worte:
http://robocombo.blogspot.com/2010/12/using-tis-launchpad-to-interface.html
Let me know if you have any questions or suggestions!
-
NJC reacted to simpleavr in MSP430 LaunchPad, basic uart
i always have one of my ez430 at work, now i also got the launchpad from doc and i kept the original one at work. that's my lunch time entertainment.
[EDIT] only when work is not busy.
-
NJC reacted to GeekDoc in MSP430 LaunchPad, basic uart
sloso: Welcome again!
UART can be done in software. NJC has been the leader in implementing this. Check for UART posts in these forums (search for "UART"), and see NJC's blog at http://www.msp430launchpad.com/ . You should have no trouble adapting the code, NJC's really good at commenting.
-
NJC reacted to NatureTM in MSP430 LaunchPad, basic uart
The USI has hardware support for SPI and I2C, but not UART. Some of the nicer MSP430's have UART capability. It looks like NJC was able to implement UART with the Launchpad using an ftdi breakout board from sparkfun.
http://www.msp430launchpad.com/2010/08/ ... -uart.html
EDIT: By the way, welcome to the forums! Be sure to check out the code section for some project ideas.
-
NJC got a reaction from NatureTM in ADC10 Vs SD16?
I know my response comes a bit late, but I have worked with both quite extensively in multiple applications.
The biggest difference is what gatesphere mentioned, the vertical resolution (how many bit's the ADC is) is much larger with the SD16. There are many applications where 10 bits is not enough (for example, an EEG). The other major differentiating factor is speed, the ADC10 is significantly faster than the SD16; if I remember correctly the SD16 in the F2013 has a maximum sample speed of about 4kHz. Remember that the Sigma Delta ADCs oversample the signal by multiple orders of magnitude and then does something called "digital decimation" to get the 16 bit output. This is a bit complicated to understand, but all the end user needs to know is that the Nyquist frequency is very different for SD16s than it is for the ADC10.
Basic moral of the story, if you need speed choose the ADC10, if you need vertical precision use the SD16.
Hope that helps.
-
NJC got a reaction from gatesphere in ADC10 Vs SD16?
I know my response comes a bit late, but I have worked with both quite extensively in multiple applications.
The biggest difference is what gatesphere mentioned, the vertical resolution (how many bit's the ADC is) is much larger with the SD16. There are many applications where 10 bits is not enough (for example, an EEG). The other major differentiating factor is speed, the ADC10 is significantly faster than the SD16; if I remember correctly the SD16 in the F2013 has a maximum sample speed of about 4kHz. Remember that the Sigma Delta ADCs oversample the signal by multiple orders of magnitude and then does something called "digital decimation" to get the 16 bit output. This is a bit complicated to understand, but all the end user needs to know is that the Nyquist frequency is very different for SD16s than it is for the ADC10.
Basic moral of the story, if you need speed choose the ADC10, if you need vertical precision use the SD16.
Hope that helps.