Author Archives: heqichen

离上次做双浆自动键已经过去很长时间了(http://heqichen.cn/wp/hqc_paddle_keyer/),也应该有点改进了, 前几天对自动键做了稍许修改。

其实我自己叫它第三代,只是因为第二次发布,所以才是第二代。内部的第二代我用了更加极端的设计,导致根本无法使用。减少了一些激进的创新想法,才有了现在比较稳定的第三代自动键。

增加了行程限位

接触点位置的限位

在两个手柄上的螺丝上加上了垫片,这样就可以调整接触点的位置了,下面图里,我把它调整到最窄的位置,加了3个垫片,当然如果要更小也可以。

01
...continue reading

2,655 total views, 2 views today

用Mac对Nano编程,但是碰到了这个问题

Screen Shot 2014-02-04 at 1.18.31 PM

点击下载后,出现了这个问题
avrdude: stk500_recv(): programmer is not responding
我能保证Board和Serial都没有选错,板子型号为: Arduino Nano w/ ATmega328, 串口为: /dev/tty.usbserial-A92D9FNR,但是还是出现问题。
截图当中,为了模拟这个问题,所以将串口选到了/dev/tty.Bluetooth-incoming-Port,所以,出现这个问题,第一就应该先检查板子型号和对应的串口名称,因为最可能是这方面出现的错误。

经过搜索,发现网上也有同样的问题:
http://forum.arduino.cc/index.php?topic=123573.0
全文如下

I had the same problem!

If you are using an Arduino Nano w/ OSX you need to install the drivers.

Download and execute it:

http://www.ftdichip.com/Drivers/VCP/MacOSX/FTDIUSBSerialDriver_v2_2_14.dmg

And you'll find this files:

    FTDIUSBSerialDriver_10_3.pkg which is specific to OSX 10.3 (Panther)
    FTDIUSBSerialDriver_10_4_10_5_10_6.pkg which is specific to OSX 10.4 (Tiger), OSX 10.5 (Leopard)
    and 10.6 (Snow Leopard).


Execute "FTDIUSBSerialDriver_10_4_10_5_10_6.pkg" if you are using OSX 10.5+ (Leopard+)

Best!

所以,到这个网址下载最新的FTDI驱动,安装好就可以使用了 :-)
http://www.ftdichip.com/Drivers/VCP/MacOSX/FTDIUSBSerialDriver_v2_2_14.dmg

2,456 total views, no views today

在业余无线电通信中,常使用CW也就是莫尔斯码来进行远距离通联。而DIY也是业余无线电玩家的精神,身为创客,更不能放过使用3D打印机的机会。

首先看看自己的虎口大概多大

01

花了不到5分钟,画了一个简单的图纸

02

又画了一刻钟,转成了模型

03
...continue reading

2,427 total views, no views today

Food is the most important element in Chinese culture. Shanghai being one of the biggest city in China has its long traditional and broad selection of foods. We mixed Shanghai Sandwich and Littlebits to bring one of the most famous breakfast of Shanghai to life.

Shanghai Sandwich is the perfect breakfast in Shanghai! It is one of the most famous local dishes with long tradition and full of flavors. Our project uses littleBits to help to make a perfect Shanghai Sandwich.

Instructions

sketch01

sketch02

sketch03

sketch04

sketch05

sketch06

sketch07

  1. Step 1. Get all the ingredients and materials ready. See the illustration we had as the recipe for the Shanghai Sandwich.

...continue reading

3,426 total views, no views today

细细想来,为了这个东西上天已经折腾了一年的时间了,试了无数的方案,也受到了无数人的帮助。终于是上天了,下面就是整机的照片。样子有点丑,各位hold住。

img

这个飞行器是以上天为目标,所以机架什么都是最低成本制作。用两块钱买来的PVC管子加上一个捡来的饮用水桶就成了四轴的机架。

用了两块电池,kk飞控,四个新西达1000kv电机,四个新西达30A电调。下面是控制部分的特写。

img

严格意义上来说还不能称之为我自己的四轴飞行器,仍然用了现成的飞控板,我自己的飞控板还在继续研制中,估计还要等上一段时间了。呵呵。

下面是第一次飞行视频。


http://v.youku.com/v_show/id_XMzA0NDI3MjYw.html

2,800 total views, no views today

很长时间没折腾了,因为前段时间忙家里的事情、学校的事情,所以就耽搁了。昨天搞了一个通宵,搞定了今天上午的一个报告,下午就继续搞飞机了。

我们原定的目标就是通过Arduino来作为四轴飞行器的控制板,那么必然就需要用Arduino来控制四个电机的转速,其实就是多PWM输出。在去年我已经实现了单电机的输出,发现了不少问题。

首先,舵机的信号格式和我们用的电调的信号格式是相同的,一般来说,航模上的电调信号线接于接收器的三号通道上,但是,如果接在别的通道上也是能正常工作的,这也证明了他们之间信号是相同的。

但是,上次通过Arduino上的Servo库来控制电机时,发现Servo库输出的pwm宽度会超过电调接收的范围,从而导致电机无法启动。然而,通过遥控器遥控时就不存在这个问题。所以,我今天就首先对遥控器的pwm信号进行测量,然后对Arduino输出的pwm信号进行测量。然后计算出控制方式。注意:这里的pwm信号是通过Arudino上Servo库输出的pwm信号,它是脉冲宽度调制,不是Arduino默认的pwm,默认的pwm是通过占空比来模拟一个模拟量。

好了,不多说,上图。

首先,测试电池是否有能力带动两个电机同时稳定地工作,我用遥控器电路对他们进行了测试。先搭建了一个下图所示的电路,进行测试。

img


http://v.youku.com/v_show/id_XMjcwNzAxNzY0.html

然后就需要测量遥控器输出的脉冲宽度和Arduino输出的脉冲宽度,搭了下面这个电路。为此我还去买了能测占空比的ut10a,但是那个万用表实在不给力,根本没有办法量到数据。-_-b

这张图当中电调只是起到供电的作用,所以并没有连电机。

img

无奈,但是发现Arduino有pulseIn()这个函数,可以计算一个高电平或低电平持续时间,正好,把数据拿下了。

最高位:	1900us
最低位:	1100us

那么就碰到了另外一个问题,既然没有仪器来测量脉冲宽度,那如何去测量Arduino输出的PWM脉冲的宽度呢?我在万念俱灰的情况下,把两个Arduino上的数字端口连在了一起,就像下面图中的一样,看看是否能自己测量自己。

img

结果很出乎意料,居然得到数据了,真的很佩服Arduino写底层库的人,中断控制得如此完美:-)

img
img

可以看到,Servo库在输出0时,对应的脉冲宽度为522ms;而输出180时,对应的脉冲宽度为2373ms。远远大于遥控器输出的范围,所以导致一开始电调无法识别Arduino的pwm信号。这样经过简单的计算就可得出,电调的最低位应为56度,最高位应为133度。:-D

有了这个重要的数据,下面就可以用它来控制电机了。不过首先还是先让程序控制舵机,保证他能正常运行,呵呵。

img

测试通过之后,就上电机啦。通过控制板上的两个旋钮,其实就是可变电阻,来控制电机的速度。

img

上视频


http://v.youku.com/v_show/id_XMjcwNzA0MDAw.html

控制板特写

img

右边的电源模块特写,整个系统的动力电源和控制电源分为两路,控制电源由我自己做的手机电池包来提供.

img

电机特写,呵呵,山寨味道太浓了

img

最后,我测了下电机的电流,在两个电机空载,半油门的情况下,电流为4A左右。这两个电机都是经过风风雨雨的,什么坠机、落水都经历过,轴已经有点不正常了,所以也只是带大概估计一下。

img

下面就是测试程序

#include <Servo.h>

//Author:	HE Qichen
//Date:	2011-5-27
//Website:	http://heqichen.cn
//Email:	heqichen(a)gmail.com

#define inputPin1  A8
#define inputPin2  A9

#define motorPin1  5
#define motorPin2  6

Servo motor1;
Servo motor2;

void setup()
{
  motor1.attach(motorPin1);
  motor2.attach(motorPin2);
  motor1.write(motorSpeedTransfer(0));
  motor2.write(motorSpeedTransfer(0));
  Serial.begin(9600);
}

void loop()
{
  int input1, input2;
  int speed1, speed2;
  input1 = analogRead(inputPin1);
  input2 = analogRead(inputPin2);
  speed1 = motorSpeedTransfer(input1);
  speed2 = motorSpeedTransfer(input2);
  motor1.write(speed1);
  motor2.write(speed2);
  Serial.print("#1 value: ");
  Serial.print(speed1, DEC);
  Serial.print("    #2 value: ");
  Serial.println(speed2, DEC);

  delay(500);
}

int motorSpeedTransfer(int s)
{
  return (s/13 + 56);
}

3,621 total views, no views today

今天完成了遥控车的改造,这是自主控制的第一步。这辆车是在淘宝上买的,结构很简单,控制很简陋。方向就是将电机打死,这时候电流会非常大,而且对于将来的自主移动的精细控制带来不利因素。所以很早就想把它改成舵机控制的了,下面就是整个改造的过程。

这就是需要改造的部分。

photo

先将需要改造的部分画下来,便于设计框架结构。我不是机械出身的,所以就画个大概吧。

photo

结构图完成

photo

在图纸上设计新的结构

photo

根据设计切割材料

photo

最后完成的样子,由于是临时电路,也就没固定,看上去有点像垃圾车-_-b

photo

改造部分的特写

photo

再来一张

photo

这些只是机械部份,然后就是控制部份。由于舵机能够转动的角度范围到180度,而该车的转向轮仅能转动在30-40度之间。同时,自主移动机器人目标是在Arduino上面开发。所以我就一步到位,先用Arduino读取天地飞的pwm信号,然后经过转换,输出新的pwm信号给舵机,这样就不会因为卡住而损坏舵机了。

最后效果如下


http://v.youku.com/v_show/id_XMjYzOTc2NzA4.html

使用的程序非常简单,如下:


#include <Servo.h>

//Author:	HE Qichen
//Date:	2011-5-3
//Website:	http://heqichen.cn
//Email:	heqichen(a)gmail.com

Servo directionServo;

void setup()
{
  pinMode(2, INPUT);
  directionServo.attach(3);
  
}

void loop()
{
  int t, a;
  t = pulseIn(2, HIGH);
  a = map(t, 1000, 2000, 65, 115);
  directionServo.write(a);
  
  
}

2,063 total views, no views today

在四轴飞行器上除了要有陀螺仪外,还要有个重要的传感器就是重力传感器。由于它们各自的误差,若使用单一的传感器会造成严重的精读问题,使飞行器丧失稳定性。所以要用两个传感器进行相互矫正。

现在重力传感器应用非常广,目前iphone等智能手机上都有重力传感器,包括笔者的一台山寨手机上都有重力传感器。

这次就是要用Android来读取重力传感器的数据。这个重力传感器模块是从淘宝购买的,模块非常简单,自己够买芯片来焊接也不成问题。根据它的datasheet,就能够知道如何使用这款重力加速度模块了。下面就进行详细的介绍

这个模块使用的芯片型号是MMA7260Q,(datasheet下载[PDF,229KB]),测试中的电路就是下面图片中的样子

photo

控制的目标是通过重力传感器的数据来控制舵机的转动。但是发现会有少量的抖动,于是在程序中加入了一个简单的滤波器,阶数没有仔细调,但是基本上能够进行控制了。


http://v.youku.com/v_show/id_XMjYzNjIyODIw.html

下面是芯片的特写

photo
photo
...continue reading

2,007 total views, no views today

今天拿到了四轴飞行器的一个重要部件,就是陀螺仪。^_^ 下面这张图上的就是了,这是一个三轴陀螺仪,seeedstudio GROVE套装的一个部件。

gyro

这个陀螺仪使用ITG3200芯片,可以直接使用了I2C接口连接到Arduino上面。默认的地址是0x68,但是可以修改成0x69,只要将板子上的JP1连起来就可以修改。接口四个针脚的定义就像下面这张图中所画的。

photo

是的。。你没看错,他们用红色作为地线 -_-b
...continue reading

2,122 total views, 1 views today