Show Posts
Pages: 1 [2] 3 4 ... 34
16  Community / Products and Services / Re: Wixel Shield: Make your Arduino Wireless! on: July 18, 2011, 01:40:43 pm
If you are interfacing the Wixel with a part running at the same voltage, you don't need shifters.  However, I was under the impression the minimum recommended operating voltage for the Arduino Uno is 7 V.  Furthermore, according to the datasheet, an ATmega328 running at 16 MHz requires at least 4.5 V to be in spec (you can run it at lower voltages if you keep the clock at 8 MHz or less).  Separately, I think you'd be better off boosting a single AA battery to 3.3 V with a regulator or using two cells with a sepic or buck-boost regulator than powering your circuits directly from two AA cells.

- Ben
17  Using Arduino / Microcontrollers / Re: Advice for microcontrollers & motor controllers on: July 02, 2011, 03:20:58 am
The jrk's graphical configuration utility only works in Windows, but there are other ways to configure the device.  I think David's post on the Pololu forum explains this better than I could (he is one of the primary engineers behind the jrk):

Quote from: David
We don't distribute precompiled Jrk software for Linux, but you can download the Pololu USB SDK and compile JrkCmd, a command-line utility (written in C#) for configuring and controlling the jrk.  You can use JrkCmd to configure the jrk from a configuration file (which you can get from either JrkCmd or the Jrk Configuration Utility).

The complete documentation of the jrk's serial protocol is in the user's guide, but the permanent configuration settings of the jrk can only be changed over USB using control transfers.  For more information on what control transfers the jrk supports and what the protocol is for them, you can see the source code of the Jrk class in the Pololu USB SDK; that source code could be considered advanced documentation for the jrk.  However, if all you want to do is configure the jrk from the command line, you won't need to look at the source code because JrkCmd supports that already.

As for Mac OS: we haven't tried compiling any of the jrk software for Mac OS and can't really support it, but you might be able to get it to work because both mono and libusb work on the Mac.

Note that the all of the jrk's settings are stored in non-volatile memory, so one option is just to find a Windows machine and use the graphical utility when you want to reconfigure the jrk, which probably won't be very often once you have it set up for a particular application.

Does this adequately address your questions?

- Ben
18  Using Arduino / Microcontrollers / Re: Advice for microcontrollers & motor controllers on: July 01, 2011, 07:35:53 pm

Note that none of those motor drivers are -likely- to have inputs or control systems for the potentiometer position sensors on the actuators (but I may be wrong - I haven't looked over the complete line lately).

Actually, Pololu has had motor controllers with feedback for over six years now smiley  We recommend jrk 21v3 motor controller with feedback for use with those linear actuators.  Just configure the mode and PID constants (the actuator product pages have a link to a settings file for using the jrk with the LACTxP actuators that will configure everything for you) and you get serial (or RC or analog voltage) position control of the linear actuator without needing to close the feedback loop with your Arduino.  There are instructions for doing this at the bottom of the linear actuator product pages.

To the original poster, ahmad:

Those actuators have a stall current of 10 A, but the average current does not get anywhere near stall when they are used within their 110-lb load rating.  The 3 A Cytron controller you linked is underpowered for this actuator (the 3 A rating is a maximum, and the continuous current it can deliver is likely significantly less than that).  This this actuator can briefly draw more than 3 A whenever it starts moving from rest or changes direction, which could damage a controller with a 3 A current limit.  The Simple Motor Controller 18v7 does have sufficient power for this actuator, but it does not support feedback, so you would need to close the feedback with your Arduino if you go this route.  Even though it is more expensive, I think the jrk 21v3 is the best option (or at least it's the simplest) because it basically just turns your linear actuator into a servo, which lets you move on to the rest of your project without having to worry about implementing feedback loops and PID algorithms yourself.

- Ben
19  Using Arduino / General Electronics / Re: Power switch on: July 01, 2011, 04:22:35 am

There is no effective way of "patenting" an electronic circuit. As soon as you substitute one component or change a resistor value, it is a different circuit.

I don't think this is true.  For example, you can change the resistor value in a low-pass filter and the circuit is still functionally a low-pass filter.  If you want to make a different circuit, I think you need to significantly change the way the circuit functions and/or accomplish something the original design does not.  I'm not an expert on patents, though, so I could be wrong.  All I know is I'm skeptical of your claim that patenting circuits is entirely ineffective.

If you look closely at the photos, you will likely see the part numbers of the ICs, and the circuit is probably "borrowed" from one of the reference designs or application notes for the ICs.

robtillaart posted a link to the circuit schematic right above your post, which I expect will be more insightful than looking closely at product photos.  The circuit is not from a reference design or application note (why is that your first assumption?), and it does offer certain advantages over alternate approaches to push-on/push-off power circuits.

- Ben
20  Community / Products and Services / Re: Wixel Shield: Make your Arduino Wireless! on: July 01, 2011, 03:37:26 am
Oh, I'm sorry I forgot to answer that part of your last post!  Whether it becomes available in the UK is up to our UK distributors.  We don't have a very good way of tracking which products our various distributors stock, but you can check with them directly:

Because the Wixel shield is so new, I don't think any of them carry it yet, but they might be willing to start if you contact them and request it.

- Ben
21  Community / Products and Services / Re: Wixel Shield: Make your Arduino Wireless! on: June 30, 2011, 05:26:30 pm
It depends what you want to do.  Typically, people use XBees to make a wireless serial link between two microcontrollers or between a microcontroller and a computer.  You can achieve that with a pair of Wixels without writing any code if you use the wireless serial app, so in that sense a pair of Wixels could replace a pair of XBees and save you money.  But please note that the XBees work over a longer range than Wixels.

The Wixels are based on TI's versatile CC2511F32, so they are not inherently restricted to working in pairs.  Most of the apps we have available now are designed to be used with pairs of Wixels, but we have some apps (e.g. the I/O Repeater) that allow for many-to-many communications, and you can write your own apps to allow for communication among a network of Wixels, too.

The Wixel is similar to the XBees in many ways, but with the integrated USB, programmable microcontroller, and 0.1" pin spacing, we feel they are a compelling, lower-cost alternative for many wireless projects (and as far as I know, wireless Arduino programming cannot be easily done with XBees).

- Ben
22  Community / Products and Services / Re: Wixel Shield: Make your Arduino Wireless! on: June 29, 2011, 01:04:50 pm
Wixels are mainly intended for wireless communication with other Wixels.  The Wixel uses the CC2511F32 microcontroller from Texas Instruments, which does not support Bluetooth, 802.15.4, Zigbee, or Wifi. The Wixel is compatible with the CC2500 transceiver, the CC2510Fx family, and the CC2511Fx family of chips from Texas Instruments.  All the apps we've written for the Wixel use MSK modulation, but the radio also supports 2-FSK and GFSK modulation.  It also supports a wide range of data rates, Manchester encoding, forward error correction, and a host of other options.

- Ben
23  Community / Products and Services / Re: Wixel Shield: Make your Arduino Wireless! on: June 25, 2011, 11:01:08 pm
What frequency does it use?
Is it allowed to use in all countries? Europe Asia Australia etcetera

The Wixel radio is low-power and operates in the 2.4 GHz band, which is relatively unrestricted in many parts of the world, but it is your responsibility to comply with your local regulations if you program your Wixel to use its wireless capabilities.  Please see section 1.c of the Wixel user's guide for more information.

- Ben
24  Community / Products and Services / Wixel Shield: Make your Arduino Wireless! on: June 24, 2011, 01:26:41 pm

We at Pololu are excited to introduce the Wixel shield for Arduino, an easy and affordable way to add wireless functionality to your Arduino or Arduino clone.  With the Wixel shield, you get more than just a general-purpose wireless serial link between your Arduino and a remote computer or embedded system: you can also wirelessly program the Arduino using the standard Arduino computer software and wirelessly debug your sketches with the Arduino serial monitor.  The Wixel shield duplicates the Arduino's USB interface, allowing you to continue using it as you traditionally would, even after you free it from its USB tether.  The shield accomplishes this without interfering with the Arduino's existing USB circuitry, however, so the Arduino's built-in USB interface can still be used while the shield is connected.

The wireless link is maintained by a pair of Wixels: one plugs into a socket on the Wixel shield and the other can be connected directly to a computer via USB (creating a virtual COM port) or to the TTL serial lines of another serial device.  This connection has a range of approximately 50 feet under typical indoor conditions.  These Wixels can be loaded with an open-source Wixel shield app to allow wireless Arduino communication and programming, or you can write your own, custom Wixel apps to augment your Arduino with their additional processing power, I/O lines, and hardware peripherals.

The shield offers several additional features:

  • Prototyping space for easier/cleaner construction of custom circuits
  • Shield-accessible Arduino reset button and pin 13 LED
  • Four general-purpose 2/3 voltage dividers (can be used to safely connect 5V signals to 3.3V inputs)
  • Two general-purpose MOSFETs (can be used as level-shifters or high-current outputs)
  • Wixel socket allows the Wixel to be removed and used for other applications

The shield is $12.95, and it is available with a pair of Wixels for $49.95.  For more information, please see the Wixel shield user's guide.  Please don't hesitate to ask if you have any questions (either in this thread or on the Pololu forum), and we welcome your feedback!

- Ben
25  Forum 2005-2010 (read only) / Troubleshooting / Re: Clock with Arduino on: July 06, 2008, 06:08:28 pm
The arduino clock is as accurate as the crystal, which in my experience  is within 2 seconds per day of an atomic clock standard.
I can see this as possible for a given Arduino, but I don't think it's something one should expect given that this would correspond to an accuracy of 0.002%, which is an order of magnitude smaller than I'm used to seeing for crystals.  Do you know what the specs say for the accuracy of the crystal used on Arduinos?

- Ben
26  Forum 2005-2010 (read only) / Troubleshooting / Re: Clock with Arduino on: July 06, 2008, 07:07:47 am
Is there a particular reason why you have a 150 ms delay in your main loop?  It doesn't seem like it's necessary, but maybe I'm missing something.  

Also, I made a miscalculation of the maximum value of millis().  I computed the number of timer0 overflows before millis() overflows, which isn't quite the same thing as the number of milliseconds since one timer0 overflow corresponds to 1.024 ms.  To perform the calculation, note that millis() returns:

64UL * 2UL * timer0_overflow_count / (F_CPU / 128000UL)

The numerator will overflow when it exceeds the maximum value that can be stored in an unsigned long (a four-byte number), which is 256^4 - 1.  So what you have is that when

timer0_overflow_count = 256^4 / 64 / 2 = 33554432

millis() has overflowed back to zero, since the numerator has become zero.

Therefore, the maximum value that millis() can return occurs when timer0_overflow_count = 33554431, which results in a millis() of:

33554431 * 64 * 2 / (F_CPU / 128000) = 33554431 / (16 MHz / 128000) = 34359737

This would correspond to 9.544 hours.

- Ben
27  Forum 2005-2010 (read only) / Troubleshooting / Re: Clock with Arduino on: July 06, 2008, 06:14:52 am
You can find the millis() and timer0 overflow code in wiring.c in your arduino-0011/hardware/cores/arduino directory, so you should be able to compute from this what the maximum overflow value is.

Actually, since I just went to look for the code myself it was easy enough for me to just calculate the value for you.  millis() will reach a maximum value of:


before overflowing back to zero.  This comes out to 9.320675 hours.  But as I said, your loop is tight enough that you can probably just detect the overflow and assume 1 ms has elapsed.  This will almost always be true, but there is a slim chance that this could cause you to be 1 ms off (and losing one millisecond every 9.3 hours is not going to be that big of a deal).

- Ben
28  Forum 2005-2010 (read only) / Troubleshooting / Re: Clock with Arduino on: July 06, 2008, 05:41:14 am
Your code doesn't correctly handle the millis() overflow because the overflow doesn't occur on an even data boundary.  You should check to see when current_millis_value is less than previous_millis_value, at which point you should be able to increment m by 1 (since your loop should be fast enough to catch the overflow before more than a millisecond has elapsed).  Or, if you want to be completely accurate, you can increment m by:

MAX_MILLIS_VALUE - previous_millis_value + current_millis_value

Also, you should disable interrupts while calling millis(), otherwise you run the risk of getting corrupted data should the timer0 overflow occur while millis() is performing its computation:

cli();  // disable interrupts
current_millis_value = millis();
sei();  // enable interrupts

And yes, if the uncertainty of your crystal is 0.05%, you can expect a worst case error of around 2 seconds per hour, but this error will be a constant that you can calibrate away.

- Ben
29  Forum 2005-2010 (read only) / Troubleshooting / Re: arduino reads only values from 0 to 500 on: August 07, 2008, 03:29:51 am
And thank you for your thanks; it means a lot to me!

- Ben
30  Forum 2005-2010 (read only) / Troubleshooting / Re: arduino reads only values from 0 to 500 on: August 05, 2008, 01:53:18 pm
Analog mode actually has no effect on the pin on the mega168, all it does is multiplex the pin voltage to the ADC module.  You can even use the pin as a digital output while reading its analog voltage (it's just that the result is not typically very exciting when you do this, unless you trying to drive high while shorted to ground or vice versa).

Note that if you're sure you want to use a pin as an analog input only you can manually disable its ability to be used as a digital input using the DIDR0 (Digital Input Disable Register).  The PIN value for the disabled input will always read zero, regardless of the voltage on the pin.  Doing this decreases power consumption of the digital input buffer.

- Ben
Pages: 1 [2] 3 4 ... 34