电子邮件:flashindream[AT]gmail[DOT]com
略懂Flash的天文爱好者
天荒坪测试之旅
Post by indream, 2010-8-16, Views:在天荒坪的三个夜晚测试自动导星,天气很理想,测试结果不理想.拍出的照片很多都有拉线,暗场也懒得拍.3天测试发现很多问题,整个系统的改善现在也有了目标
火焰星云&马头星云
礁湖星云&三叶星云
Ω星云
哑铃星云
猎户座大星云
昴星团
双星团
导星程序继续优化
Post by indream, 2010-8-5, Views:继续调整控制部分的代码,星点终于接近正圆了.
相机:canon 300D
主镜:80ED/560mm@iso100
导星镜:f=200mm@F3.3
曝光时间:600秒
中央100%:

缩略图:

结果不太理想
Post by indream, 2010-8-1, Views:图像插值走了不少弯路,虽然昨天就正确获得了插值后的图像(将8x8插值到44x44大小进行星点定位),导星的结果还是有较大拖线.今天反复调整控制命令,最后还是使用bang-bang控制获取到下图的结果.RA轴仍旧有拖线,实际是修正的来回摆动.
赤道仪:LXD75
控制器:Autostar
主镜:80ED/F7
导星镜:200mm/F3.3
曝光时间:600秒@ISO100(图像中部100%截取)

ARM导星系统摆拍
Post by indream, 2010-6-10, Views:嘿嘿

ARM导星系统开发笔记(二)
Post by indream, 2010-6-6, Views:今天给系统加入了串口通讯,可以发送字符指令控制Autostar。从Usart出来的电平需要先转换成TTL电平再能跟PC串口通讯。折腾大半天,终于搞定Autostar的连接线,实现整个回馈系统。
void USART_GPIO_Init(void){
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_APB2Periph_USART1 ,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //推挽输出-TX
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入-RX
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_Configuration();
}
void USART_Configuration(void){
USART_InitTypeDef USART_InitStructure;
USART_ClockInitTypeDef USART_ClockInitStructure;
USART_StructInit(&USART_InitStructure);
USART_ClockStructInit (&USART_ClockInitStructure);
USART_ClockInit(USART1, &USART_ClockInitStructure);
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);
}
void USART1_Puts(char * str)
{
while(*str)
{
USART_SendData(USART1, *str++);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
}
ARM导星系统开发笔记(一)
Post by indream, 2010-6-4, Views:GetLightZone函数主要实现获取整个屏幕最亮的区域(通过按键中断调用), GetPixelPos函数在图像刷新之后获取锁定亮区域的星点中心坐标.
void GetLightZone(void){
int i=0,j=0,ii=0,jj=0;
long totalLight=0,maxLight=0,pixel=0;
for(i=0;i<24;i++){
for(j=0;j<32;j++){
totalLight = 0;
for(ii=0;ii<10;ii++){
for(jj=0;jj<10;jj++){
pixel=GetLight(LCD_RD_PIXEL(i*10+ii,j*10+jj));
totalLight+=pixel;
}
}
if(totalLight>maxLight){
maxLight=totalLight*1;
posBlock[0] = (int)(i/3)*w;
posBlock[1] = (int)(j/3)*w;
}
}
}
}
void GetPixelPos(void){
unsigned int i=0,j=0,w2=w/2;
unsigned long maxI = 0,maxJ=0,tempI=0,tempJ=0;
for(i=0;i<w;i++){
tempI = 0;
tempJ = 0;
for(j=0;j<w;j++){
tempJ+=GetLight(LCD_RD_PIXEL(posBlock[0]+i,posBlock[1]+j));
tempI+=GetLight(LCD_RD_PIXEL(posBlock[0]+j,posBlock[1]+i));
}
if(maxJ<tempJ){
maxJ = tempJ;
centerX=posBlock[0]+i;
}
if(maxI<tempI){
maxI = tempI;
centerY=posBlock[1]+i;
}
}
posBlock[0]=centerX-w2;
if(centerX<w2){
posBlock[0]=0;
}
if(centerX>224){
posBlock[0]=209;
}
posBlock[1]=centerY-w2;
if(centerY<w2){
posBlock[1]=0;
}
if(centerY>304){
posBlock[1]=289;
}
}
这是用70mmF5抓取的星点,天蝎座某星


开发基于ARM(CORTEX M3)自动导星系统
Post by indream, 2010-6-3, Views:上周买了一块基于stm32的camera开发板,花了一周时间学习ARM.在多个嵌入式高手的帮助指导下,终于在昨晚理解了整个系统,今天终于实现了图像数据的采集功能.
图像采集的大问题已基本解决,接下来就是要开发通讯协议控制goto或者通过PWM控制电机驱动.哈哈

基于Python for S60的自动导星程序(四)
Post by indream, 2010-3-10, Views:今天又用手机导星系统拍了10几张照片,只有两张尚可,这两张均为天狼星作导星,用猎户座episode星(1.7等)做导星基本上有不规则运动.
除了导星的亮度问题还有一个是机械问题,好几次是因为相机在球台上滑动了位置,另外一个问题是程序自动关闭,初步判断是电量变化提醒造成的
600秒,镜头焦距210mm@f22,iso100

M41,600秒,镜头焦距210mm@f22,iso100

手机导星工作照

正面
基于Python for S60的自动导星程序(三)
Post by indream, 2010-3-9, Views:很久没有在南方的三月份看见下雪了,这次冷空气也带来了久违的晴天.下班回家后就开始把flash版的自动导星程序移植到python,没花多少时间把程序调试运行在手机上.
终于到了实际拍摄验证效果的时刻.目标依旧是天狼星
依次拍了60秒(F8),180秒(F22),900秒(F22),ISO均是100,镜头焦距135mm,机身EOS 300D,手机N6120C,赤道仪LXD75(朝南卧室,没有对极轴,仅通过指南针估计一下方向)
图像均为RAW转JPG,100%裁切

60秒

180秒

900秒

最后一张是手机在第一次拍900秒到一半的时候,程序自动退出
基于Python for S60的自动导星程序(二)
Post by indream, 2010-3-6, Views:手机键盘在使用viewfinder的时候不能用keyEvent检测,从pycamera的例子找到利用viewfinder.getEvents()方法获取键盘按下事件的检测
for ev in viewfinder.getEvents():
keyHandleEvent(ev)
星点中心的判断,是通过灰度最大值来确定高亮区的中心位置,程序如下
maxY=0
posx = 0;
posy = 0;
p255 = math.pow(255,5)
for i in xrange(0,aCols):
line=0
for j in xrange(0,aRows):
(r,g,b) = Image.GetPixel(i,j)
gy=(r * 0.30 + g * 0.59 + b * 0.11);
line+=math.pow(gy,6)/p255
if maxY<line:
maxY = line
posx = i
maxX=0
for i in xrange(0,aRows):
line=0
for j in xrange(0,aCols):
(r,g,b) = Image.GetPixel(j,i)
gy=(r * 0.30 + g * 0.59 + b * 0.11);
line+=math.pow(gy,6)/p255
if maxX<line:
maxX = line
posy = i
Hot Articles
Friend Connect
New Articles
- [09/08]PID的小故事
- [08/27]Calculating Stellar Positions
- [08/17]GB2312乱码问题的终极解决
- [08/16]天荒坪测试之旅
- [08/05]导星程序继续优化
- [08/01]结果不太理想
- [06/30]终于上ED了
- [06/27]06/26月偏食
- [06/18]将基于AVM1Movie的SWF编码成AS3的MovieClip类
- [06/10]ARM导星系统摆拍
- [06/06]ARM导星系统开发笔记(二)
- [06/04]ARM导星系统开发笔记(一)
- [06/03]开发基于ARM(CORTEX M3)自动导星系统
- [05/27]跳啊,跳吧
- [05/23]汉字转拼音_AS3
Archives
- 2010 September (1)
- 2010 August (5)
- 2010 June (7)
- 2010 May (10)
- 2010 April (2)
- 2010 March (4)
- 2010 February (3)
- 2010 January (3)
- 2009 December (2)
- 2009 November (7)
- 2009 October (8)
- 2009 September (6)
- 2009 August (11)
- 2009 July (9)
- 2009 June (2)
- 2009 May (9)
- 2009 April (8)
- 2009 March (6)
- 2009 January (2)
- 2008 December (6)
- 2008 November (4)
- 2008 October (1)
- 2008 August (3)
- 2008 July (2)
- 2008 June (9)
- 2008 May (8)
- 2008 April (20)
- 2008 March (4)
- 2008 January (1)
- 2007 December (3)
- 2007 November (7)
- 2007 October (6)
- 2007 September (1)
- 2007 August (10)
- 2007 July (11)
- 2007 June (5)
- 2007 April (4)
- 2007 March (10)
- 2007 February (4)
- 2007 January (10)
- 2006 December (17)
- 2006 November (11)
- 2006 October (6)
- 2006 September (19)
- 2006 August (22)
Favorite
Links
Statistics
- 文章总数:313
- 评论总数:194
- 引用总数:0
- 浏览总数:2000
- 留言总数:1
- 当前主题:sean
- 当前样式:Sean_Sim
